初识 Spring Cloud
什么是Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
微服务的优缺点
优点
- 每个服务足够内聚,足够小,代码容易理解这样能够聚焦一个指定的业务功能或业务需求。
- 开发简单,开发效率提高,一个服务可能就是专一的只干一件事情。
- 微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。
- 微服务能够被小团队单独开发。
- 微服务能使用不同的语言开发。
- 易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如Jenkins、Hudson、bamboo。
- 微服务易于被一个开发人员理解、修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。
- 微服务允许你利用融合最新技术。
- 微服务只是业务逻辑的代码,不会和HTML/CSS或其他界面组件混合。
- 每个微服务都有自己的存储能力,可以有自己的数据库,也可以统一数据库。
缺点
- 开发人员要处理分布式系统的复杂性
- 多服务运维难度,随着服务的增加,运维的压力也在增大
- 系统部署依赖
- 服务间通讯成本
- 数据一致性
- 系统集成测试
- 性能监控
Spring Cloud和dubbo的区别
1.服务调用方式dubbo是RPC Spring Cloud 是Rest Api;
2. 注册中心,dubbo是Zookeeper,Spring Cloud是Eureka也可以是Zookeeper
3. 服务网关,dubbo本身没有实现,只能通过其他第三方技术整合,Spring Cloud有Zuul路由网关, 作为路由服务器,进行消费者请求发布,Spring Cloud支持断路器,与git完美集成配置文件支持版 本控制,事务总线实现配置文件的更新与服务自动装配等等一系列的微服务框架要素
微服务技术栈
- 维度(spring cloud)
- 服务开发:spring spring MVC spring boot
- 服务配置与管理:Netflix公司Archaiusm,阿里的Diamond
- 服务注册与发现:Eureka,Zookeeper
- 服务调用:Rest,RPC,gRPC
- 服务熔断器:Hystrix
- 服务接口调用:Fegin
- 服务负载均衡:Nginx,Ribbon
- 消息队列:kafka,Rabbitmq , activemq
- 服务配置中心管理:Spring Cloud Config
- 服务路由(API网关):Zuul,Gateway
- 事件消息总线:Spring Cloud Bus
Eureka
服务注册和发现是什么意思
当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。 Eureka服务注册和发现可以在这种情况下提供帮助。由于所有服务都在Eureka服务器上注册并通过调用Eureka服务器完成查找,因此无需处理服务地点的任何更改和处理。
Zookeeper与Eureka区别
-
CPA理论:一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP,而Eureka则是AP
-
Eureka本质是一个工程,Zookeeper只是一个进程
-
Zookeeper有Leader和Follower角色,Eureka各个节点平等
-
Eureka采用自我保护机制解决分区问题,Zookeeper采用半数存活原则
Eureka自我保护机制
当Eureka Server 节点在短时间内丢失过多的实例的连接时,节点会进入自我保护模式,保护注册信息,不在删除注册数据,故障恢复时,自动退出自我保护模式
Hystrix
Hystrix是用来放雪崩的利器,具备服务降级,服务熔断,依赖隔离,监控
什么是服务熔断
一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施,所以很多地方把熔断亦称为过载保护。很多时候刚开始可能只是系统出现了局部的、小规模的故障,然而由于种种原因,故障影响的范围越来越大,最终导致了全局性的后果。
什么是服务降级
当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行。