-
出现原因
单体应用的局限:一个系统过大时会导致功能的耦合,无法针对相应的业务进行开发;不同的功能业务对于硬件的需求程度不同,在单体应用上很难进行提升;难以使得不同的业务采用不同的底层架构
随着系统的开发和迭代,系统的功能越来越多,此时单一的应用程序已经无法满足要求,微服务架构因此应运而生
微服务架构提高了系统中各个模块的独立性,同时整体上提高了系统的性能和可伸缩性,但是随之而来的问题就是各个微服务系统之间如何进行统一的管理和配置,配置中心便是为了解决这一问题而出现。
常见的配置中心有
NacOS、Euraka、zookeeper等服务的变化:单体应用 ——> 水平划分、垂直划分(服务重用、信息孤岛等问题) ——>
SOA(服务的拆分) ——> 微服务(优点:服务小、可扩展性强。缺点:运维困难、数据一致性难以保障、出现问题难以排查)SOA与微服务:SOA致力于解决服务重用、信息孤岛的问题微服务为了解决业务解耦问题
-
主流的配置中心
Spring Cloud Config:Spring Cloud 生态组件,与 Spring Cloud 整合较好;由 Git 作为版本管理的工具;只支持Java;单击读写、3节点读写都比较慢Apollo:携程开源的配置管理中心,支持语言较多;文档较为详细NacOS:阿里开源的配置管理中心;性能较好;文档较少
-
领域模型
-
配置优先级
Spring自定义 >ext-config>share-details
Spring Cloud NetflixEureka:服务注册测与发现Zuul:服务网关Ribbon:负载均衡Feign:远程服务的客户代理Hystrix:断路器,提供服务熔断和限流的功能Tuibine:将各个服务实例上的Hystrix监控信息进行统一聚合
Spring Cloud AlibabaNacOS:分布式配置中心NacOS:服务注册与发现Sentinel:流量控制与服务降级RocketMQ:消息驱动Seate:分布式事务Dubbo:RPC 通信
- 其它
-
传统系统部署中,服务运行在一个固定的已知的
IP和固定端口上,不会发生变化。而在现代容器化和虚拟化的环境下,服务的启动和销毁是很频繁的,因此服务地址和端口也在不断发生变化。此时,需要服务发现机制 -
服务发现的种类
-
服务发现技术对比
- NacOS
- 一致性协议:
CP+AP - 健康检查基于 TCP、HTTP、MYSQL、Client Beat
- 支持容器化
- 项目维护性好
- 一致性协议:
- Eureka
- 一致性协议:
AP - 不再被维护。。。。
- 一致性协议:
- NacOS
-
Provider APP:服务的提供者 -
Consumer APP:服务的消费者 -
Name:通过VIP或者DNS实现NacOS的高可用路由 -
NacOS ServerOpen API:功能的访问入口Config Service: 配置服务模块Naming Service:名字服务模块Consitency Protocol:一致性协议。集群时保证数据同步
-
服务注册
ServiceRegistry:定义Spring Cloud的规范。spring-cloud-commonNacosServiceRegistry:Spring Cloud Alibaba -
spring-cloud-commons的spring.factoriesorg.springframework.cloud.client.serviceregistry.AutoServiceRegistrationAutoConfiguration



