微服务

作者: sizuoyi00 | 来源:发表于2022-06-19 16:49 被阅读0次

服务注册与发现
https://zhuanlan.zhihu.com/p/367854163
服务提供者(Service Provider):服务启动时将服务信息注册到服务注册表,服务退出时将服务注册表的服务信息删除掉。
服务消费者(Service Consumer):从服务注册表获取服务提供者的最新网络位置等服务信息,维护与服务提供者之间的通信。
服务注册表(Service Registry):联系服务提供者和服务消费者的桥梁,维护服务提供者的最新网络位置等服务信息。

服务注册表是一个分布式的kv数据库,因此,存在CAP问题。根据CAP原则:分布式系统不能同时支持 C(一致性)、A(可用性)、P(分区容错性)需要根据自己的实际业务需求选择CAP的其中两个。
其提供了一个管理API和一个查询API。

Zookeeper
https://www.cnblogs.com/adamans/articles/13409234.html
Zookeeper 支持 CP,当集群中如果有节点宕机则需要选举 leader(FastLeaderElection),选举过程需要 30 至 120 秒,选举过程时集群不可用,牺牲时间来保证数据一致性。

注册与发现的工作流程
1.假设 ZK 已经启动,服务提供者启动时把服务注册到 ZK 注册中心;
2.ZK注册中心和服务提供者之间建立一个 Socket 长连接,ZK 注册中心定时向每个服务提供者发数据包,如果服务提供者没响应,则剔除该服务提供者实例,把更新后的服务列表发送给所有服务消费者(即通知);(ZK通过创建当前服务临时节点,当ZK与服务提供者断开连接(session超时)则会删除该临时节点)
3.服务消费者启动时到 ZK 注册中心获取一份服务列表缓存到本地供以后使用;
4.服务消费者远程调用服务时,先从本地缓存找,如果找到则直接发起服务调用,如果没有则到 ZK 注册中心获取服务列表缓存到本地后再发起服务调用;
5.当其中一个服务提供者宕机或正常关闭时,ZK 注册中心会把该节点剔除,并通知所有服务消费者更新本地缓存;(ZK节点watch机制)
6.当这个服务提供者正常启动后,ZK 注册中心也能感知到,并通知所有服务消费者更新本地缓存。

Eureka
Eureka Server 集群当中的每个节点都是通过 Replicate(即复制)来同步数据,没有主节点和从节点之分,所有节点都是平等而且数据都保持一致。因为结点之间是通过异步方式进行同步数据,不保证强一致性,保证可用性,所以是 AP。

注册与发现的工作流程
1.假设 Eureka Server 已经启动,Eureka Client(服务提供者)启动时把服务注册到 Eureka Server;
2.Eureka Client(服务提供者)每 30 秒(默认可配置)向 Eureka Sever 发 http 请求(即心跳),即服务续约;
3.Eureka Server90 秒没有收到向 Eureka Client(服务提供者)的心跳请求,则统计 15 分钟内是否存在 85% 的 Eureka Client(服务提供者)没有发心跳,如果是则进行自我保护状态(比如网络不稳定),如果不是则剔除该 Eureka Client(服务提供者)实例;
4.Eureka Client(服务消费者)定时调用 Eureka Server 接口获取服务列表更新本地缓存;
5.Eureka Client(服务消费者)远程调用服务时,先从本地缓存找,如果找到则直接发起服务调用,如果没有则到 Eureka Server 获取服务列表缓存到本地后再发起服务调用;
6.Eureka Client(服务提供者)应用关闭时会发 HTTP 请求到 Eureka Server,服务端接受请求后把该实例剔除。


RPC
rpc:对于Java程序员而言,RPC就是远程方法调用。

远程方法调用和本地方法调用是相对的两个概念,本地方法调用指的是进程内部的方法调用,而远程方法调用指的是两个进程内的方法相互调用。
如果实现远程方法调用,基本的就是通过网络,通过传输数据来进行调用。

  1. RPC over Http:基于Http协议来传输数据
  2. PRC over Tcp:基于Tcp协议来传输数据

Dubbo
Dubbo一开始的定位就是RPC,专注于两个服务之间的调用。但随着微服务的盛行,除开服务调用之外,Dubbo也在逐步的涉猎服务治理、服务监控、服务网关等等,所以现在的Dubbo目标已经不止是RPC框架了,而是和Spring Cloud类似想成为了一个服务框架。

  1. 负载均衡、集群容错、服务降级
  2. 本地存根、本地伪装、参数回调
  3. 异步调用、泛化调用、动态配置
  4. 管理台、动态配置、服务路由

Feign 可以与 Hystrix 组合使用,支持熔断回退
Feign 可以与ProtoBuf实现快速的RPC调用

相关文章

  • 菜鸟带你看传说中的微信开发!

    1.微信开发原理微信客户端->微信服务器->开发绑定的服务器。微信开发步骤: 2.微信验证服务器原理(验证服务器的...

  • 胡健豪:如何运营微信矩阵

    微信矩阵是怎么回事,其实就是1个微信服务号+N个微信订阅号。微信服务号和订阅号的差别在于,服务号提供公司服务,订阅...

  • zabbix微信 | 微信对接自己服务器(2)

    上接使用微信告警 企业号微信对接自己服务器 1.本地服务器与微信服务器的信任 本地具有独立外网ip服务器获取微信服...

  • 微服务的微

    微服务的微,是指服务粒度的微么? 微服务可能是由此得名的。但在微服务架构思想中,服务粒度的微,不应该放在首要强调的...

  • 微信服务

    1.微信sdk 样例 http://demo.open.weixin.qq.com/jssdk/

  • 实战 Docker+Kubernetes 微服务容器化(一)-初

    1 微服务-导学 2 软件架构的进化 3 什么是微服务 多微才算微 微服务的特征 微服务诞生背景 4 画出微服务架...

  • SDtalk-10:阿里茶山服务设计实践-4

    2015年的茶山:服务设计微日记 《服务设计微日记》以微日记的故事写作形式,引用每天生活和工作的真实服务设计案例及...

  • 微服务应该具备的功能

    微服务应该具备的功能 >> 微服务应该具备的功能微服务,可以拆分为“微”和“服务”二字。“微”即小的意思,那到底多...

  • 微信开发——内网穿透

    微信开发需要与微信服务器交互,要保证微信服务器能向我们的服务器POST数据,我们的服务器需要能够在公网访问。这里简...

  • 【服务设计】服务设计微日记

    服务设计如同一部电影,有各个角色,出场顺序也不一样,服务流程贯穿应用场景,且有故事性,各个利益相关者都有主次之分。...

网友评论

      本文标题:微服务

      本文链接:https://www.haomeiwen.com/subject/isasprtx.html