再看Spring Could微服务的关键组件
Consul是用go开发的开源注册中心服务,内置服务发现与注册、raft一致性协议实现、健康检查、多数据中心等方案。与Eurker相比,consul还能对异构服务如rpc提供支持。
作为微服务系统的核心组件,一旦consul挂掉,所有服务都将停止,因此生产环境中必须要用Consul高可用集群。在Consul集群中有server、client两种角色,集群状态信息都存在server节点,client角色是无状态的,它只是代理转发rpc请求到sever节点,起到缓冲的作用,从而减少server节点数量(server节点越多,达成共识、节点间同步代价越高,一般建议3-5台)。Consul通过集群设计,Raft选举算法,Gossip协议等机制来确保Consul服务的稳定与高可用,如果需要更高的容灾机制,可通过设计双数据中心异地搭建两个Consul数据中心,组成一个异地灾备Consul服务集群。
ConfigServer配置中心是对微服务应用配置管理的服务,如数据库、端口配置等,与Consul一样是一个重要的独立服务组件,所有的微服务应用都要调其服务获取配置信息。随着微服务配置越来越多,如何管好这些配置及它们的更新策略,搭建ConfigServer集群也是保证微服务体系稳定的重要方面。这样的关键组件应该搭建独立的集群、部署在物理机而不是容器里。因为ConfigServer主要是http配置文件访问服务,不涉及节点选举、一致性同步操作,可以按传统方式搭建高可用配置中心。可以单独通过git来管理应用配置文件,ConfigServer通过网关拉取git仓库的配置供服务获取就可以了。
与传统方案通过Nginx做负责均衡方案不同,Spring Could中微服务间调用的负载均衡默认是服务消费端通过Robbin代理实现的客户端负载均衡,同样的服务熔断、限流等机制也是基于Hystrix在消费端实现的,这都需要在消费端进程内部通过代码的方式实现,对消费端存在一定的代码侵入性,这也是后面出现Service Mesh(服务网格)概念的原因之一。
基于Spring Could的微服务体系,通过集成各种开源组件为整个体系服务支持,但在负载均衡、熔断、流控等方面需要对消费端业务进程侵入,于是出现了Service Mesh,其基本思路是通过主机独立的Proxy进行的部署来解耦业务系统流程,Proxy除了负责服务发现和负责均衡外,还负责动态路由、容错限流、监控度量和安全日志等功能。
基于 Spring Cloud 的微服务架构演变史?
相关文章
- Spring Boot devtool的使用
- 在Spring boot项目中实现多数据源的方案
- idea实现spring + springMVC + mybatis 整合(1)
- 基于IDEA+Gradle+jdk11搭建Spring框架源码阅读环境
- Spring集成Mybatis,spring4.x整合Mybatis3.x
- spring计划任务,springMvc计划任务,Spring@Scheduled,spring定时任务
- Spring Boot 2 实战:mock测试你的web应用
- 缓存抽象层Spring cache实战操作
- spring context的层次关系
- spring的context---ServletContext WebApplicationContext---Spring各种上下文的关系详解
- spring框架漏洞整理(Spring Cloud Config路径穿越导致的信息泄露)
- spring框架漏洞整理(Spring Framework漏洞)
- spring框架漏洞整理(Spring Data漏洞)
- 【Spring常见错误】Initialization failed for ‘https://start.spring.io‘
- Spring Boot用Cxf的jax-ws开发WebService
- Spring Cloud Alibaba 微服务组件 Nacos 配置中心(六)
- Spring Cloud Alibaba 微服务组件 Nacos 注册中心(三)
- Spring学习---Spring中利用组件实现从FTP服务器上传/下载文件
- spring mvc学习(一)入门实例
- spring mvc Spring Data Redis RedisTemplate [转]
- 全栈开发实战|电子商务平台的设计与实现(Spring Boot + MyBatis + Thymeleaf)
- spring boot 2 + shiro 实现权限管理
- 【spring mvc】Spring MVC 的参数解析器ArgumentResolver阐述
- 玩转spring boot——结合JPA事务
- [原理][源代码解析]spring中@Transactional,Propagation.SUPPORTS,以及 Hibernate Session,以及jdbc Connection关系---转载
- 曹工说Spring Boot源码系列开讲了(1)-- Bean Definition到底是什么,附spring思维导图分享
- Spring Cloud各组件