微服务框架/配置中心/注册中心

cnblogs 2024-07-03 12:09:01 阅读 99

一、微服务框架:

1.Dubbo

基于Java的高性能 RPC 分布式服务框架

2.Spring Cloud

“全家桶”,因其具备微服务架构体系中所需的各个服务组件,

比如服务注册发现(如Spring Cloud Eureka、Zookeeper、Consul)、API网关路由服务(Spring Cloud Zuul),客户端负载均衡(Spring Cloud Ribbon,Zuul默认集成了Ribbon)、服务容错保护(Spring Cloud Hystrix),消息总线 (Spring Cloud Bus)、分布式配置中心(Spring Cloud Config)、消息驱动的微服务(Spring Cloud Stream)、分布式链路跟踪服务(Spring Cloud Sleuth)。

3.比较

使用Dubbo构建的微服务架构就像组装电脑,各个环节的可选自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,但是如果是一个高手,这一切都不存在问题;

使用Spring Cloud就像品牌机,在Spring Source的整合下,做了大量兼容性的测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外配件时,需要对配件足够的了解。

二、配置中心

1.原理

a.配置实时生效:

传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库或配置文件;

配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置。

b.配置管理流程:

配置的权限管控、灰度发布、版本管理&回滚、配置格式检验、安全配置、多环境、多集群等一系列的配置管理。

2.主流分布式配置中心框架:

Spring Cloud Config 依赖git,存储在git

Apollo 携程开源的配置管理中心,存储在mysql

Nacos 阿里开源,存储在mysql

三、注册中心

1.原理:

a.注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。

在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。

服务提供者、服务消费者、注册中心

各个微服务在启动时,将自己的网络地址等信息注册到注册中心,注册中心存储这些数据。

服务消费者从注册中心查询服务提供者的地址,并通过该地址调用服务提供者的接口。

微服务网络地址发送变化(例如实例增加或IP变动等)时,会重新注册到注册中心。这样,服务消费者就无需人工修改提供者的网络地址了。

服务的注册与发现:服务注册是指微服务在启动时,将自己的信息注册到注册中心的过程;服务发现是指查询可用的微服务列表及网络地址的机制。

b.注册中心解决了服务之间的自动发现。

在没有注册中心时候,服务间调用需要知道被调方的地址或者代理地址。当服务更换部署地址,就不得不修改调用当中指定的地址或者修改代理配置。

而有了注册中心之后,每个服务在调用别人的时候只需要知道服务名称就好,修改地址都会通过注册中心同步过来。

2.主流分布式注册中心框架:

Eureka AP

Zookeeper CP

Nacos AP

补充:

CAP原则:指的是在一个分布式系统中,

一致性(Consistency) 写操作之后的读操作,必须返回该值

可用性(Availability) 只要收到用户的请求,服务器就必须给出回应。

分区容错性(Partition tolerance) 大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区,区间通信可能失败

这三个要素最多只能同时实现两点,不可能三者兼顾。

四、API网关路由服务

1.作用

主要是限流、认证鉴权(过滤器)、路由转发

路由转发:路由id(注册服务的id)、uri路径、判定器、过滤器,可以写在配置文件中,或者存在表中

2.技术

nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务;

Spring Cloud Zuul 是Netflix出品的一个基于JVM路由和服务端的负载均衡器;

Spring Cloud gateway 是spring出品的基于spring的网关项目,集成断路器,路径重写,性能比Zuul好;

五、客户端负载均衡

ribbo

翻译

搜索

复制


上一篇: Eclipse与MySQL数据库的连接(已实操)

下一篇: 【JavaSE】异常(Exception)

本文标签

配置    服务    Spring    中心   


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。