赞
踩
从字面上理解,微服务就是 ‘微小的服务’:
简单来说,微服务就是一种将一个单体应用程序(all in one)拆分为一组小型服务的设计风格,拆分完成后,每一个服务都运行在独立的进程中,服务于服务之间采用轻量级的通信机制来进行沟通(Spring Cloud 中采用基于HTTP 的 RESTful API)。
每一个服务,都是围绕具体的业务进行构建,例如一个电商系统,订单服务、支付服务、物流服务、会员服务等等,这些拆分后的应用都是独立的应用,都可以独立的部署到生产环境中。就是在采用微服务之后,我们的项目不再拘泥于一种语言,可以 Java、Go、Python、PHP 等等,混合使用,这在传统的应用开发中,是无法想象的。而使用了微服务之后,我们可以根据业务上下文来选择合适的语言和构建工具进行构建。
1.服务按照业务来划分,每个服务通常只专注于某一个特定的业务、所需代码量小,复杂度低、易于维护。
2.每个微服都可以独立开发、部署和运行,且代码量较少,因此启动和运行速度较快。
3.采用单体架构的应用程序只要有任何修改,就需要重新部署整个应用才能生效,而微服务则完美地解决了这一问题。在微服架构中,某个微服务修改后,只需要重新部署这个服务即可,而不需要重新部署整个应用程序。
4.微服务具有良好的故障隔离能力,当应用程序中的某个微服发生故障时,该故障会被隔离在当前服务中,而不会波及到其他微服务造成整个系统的瘫痪。
1. 复杂度可控
2. 独立部署
3. 技术选型灵活
4. 较好的容错性
5. 较强的可扩展性
在微服务架构中,系统会被拆分为若干个微服务,每个微服务又是一个独立的应用程序。单体 架构的应用程序只需要部署一次,而微服务架构有多少个服务就需要部署多少次。随着服务数 量的增加,如果微服务按照单体架构的部署方式,部署的难度会呈指数增加。业务的粒度划分得越细,微服务的数量就越多,这时需要更稳定的部署机制。随着技术的发展,尤其是 Docker 容器技术的推进,以及自动化部署工具(例如开源组件 Jenkins)的出现,自动化部署变得越来越简单。
SpringCloud就是微服务理念的一种具体落地实现方式,它是一系列框架的集合,帮助微服务架构提供了必备的功能。
目前开发中常用的落地实现有三种:
Dubbo+Zookeeper 半自动化的微服务实现架构 (别的管理没有)
SpringCloud Netflix 一站式微服务架构
SpringCloud Alibaba 新的一站式微服务架构
三大公司 Spring Netflix Alibaba
服务的注册和发现: eureka,nacos,consul
服务的负载均衡: (ribbon,dubbo)
服务的相互调用:(openFeign,dubbo)
服务的容错: (hystrix,sentinel)
服务网关:(gateway,zuul)
服务配置的统一管理:(config-server,nacos,apollo)
服务消息总线: (bus)
服务安全组件: (security,Oauth2.0)
服务监控 : (admin) (jvm)
链路追踪: (sleuth+zipkin)
Spring Boot 和 Spring Cloud 都是 Spring 大家族的一员。
1. Spring Boot 和 Spring Cloud 分工不同
Spring Boot 是一个基于 Spring 的快速开发框架,它能够帮助开发者迅速搭 Web 工程。在微服务开发中,Spring Boot 专注于快速、方便地开发单个微服务。
Spring Cloud 是微服务架构下的一站式解决方案。Spring Cloud 专注于全局微服务的协调和治理工作。换句话说,Spring Cloud 相当于微服务的大管家,负责将 Spring Boot 开发的一个个微服务管理起来,并为它们提供配置管理、服务发现、断路器、路由、微代理、事件总线、决策竞选以及分布式会话等服务。
2.Spring Cloud 是基于 Spring Boot 实现的
Spring Cloud 是基于 Spring Boot 实现的。与 Spring Boot 类似,Spring Cloud 也为提供了一系列 Starter,这些 Starter 是 Spring Cloud 使用 Spring Boot 思想对各个微服务框架进行再封装的产物。它们屏蔽了这些微服务框架中复杂的配置和实现原理,使开发人员能够快速、方便地使用 Spring Cloud 搭建一套分布式微服务系统。
3. Spring Cloud 不能脱离 Spring Boot 单独运行
Spring Boot 不需要 Spring Cloud,就能直接创建可独立运行的工程或模块。
Spring Cloud 是基于 Spring Boot 实现的,它不能独立创建工程或模块,更不能脱离 Spring Boot 独立运行。
注意:虽然 Spring Boot 能够用于开发单个微服务,但它并不具备管理和协调微服务的能力,因此它只能算是一个微服务快速开发框架,而非微服务框架。
在搭建项目时,项目启动不起来很多时候都是因为依赖版本问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。