分布式服务框架设计

目录

服务框架的设计

服务框架的功能

服务框架的性能指标

服务治理需要哪些功能


  • 服务框架的设计

  • 尽管不同的分布式服务框架实现细节存在差异,但是核心功能差异不大,下面的架构图描绘了一个分布式服务框架的整体逻辑架构

  • 总共分为 3 层:
  • 1-服务层,Service,其中主要部分就是动态代理,主要用于将服务提供者的接口封装成远程服务调用
    • 上层的服务接口用于 Spring 之类的业务框架使用,也是 Spring 的 bean
  • 2-过滤器层,服务调用职责链,提供多种调用切面供框架自身和使用者扩展,例如负载均衡,性能统计,服务调用完成通知,失败重试等
  • 3-RPC层,这里就是 RPC 框架的核心部分,包括通信框架,序列化框架,还有用于屏蔽底层通信框架和序列化框架的抽象接口
  • 分布式服务框架通常会包含另外两个重要功能:服务治理中心 和 服务注册中心
  • 1-服务注册中心:负责服务的发布和通知,通常支持对等集群部署,某个节点宕机不会影响整个集群不可用
    • 即使全部宕机,只影响新的节点注册和发布,不影响现有的,因为客户端需要缓存服务路由信息
  • 2-服务治理中心:服务治理中心通常包括服务治理接口 和 服务治理 Portal,架构师,测试人员和系统运维人员通过服务治理 Portal 对服务的运行状态,历史数据,健康度和调用关系等进行可视化的分析和维护,目标是要持续优化服务,防止服务架构腐化,保证服务高质量运行
  • 服务框架的功能

  • 虽然每个服务框架不尽相同,但是还是有一些核心功能是相同的,比如以下功能:
    • 1-服务订阅发布:比如,配置化发布和引用服务,服务自动发现,服务在线注册和取消注册
    • 2-服务路由:比如,默认提供随机路由,轮询,基于权重的路由,粘滞连接,路由定制功能
    • 3-集群容错:比如,Failover(失败自动切换),Failback(失败自动恢复),Failfast(快速失败)
    • 4-服务调用:需要支持:同步调用,异步调用,并行调用
    • 5-多协议:包括私有协议,公有协议
    • 6-序列化方式:需要支持二进制和文本类序列化方式
    • 7-统一配置:支持本地静态配置,支持基于配置中心的动态配置
  • 以上功能可以按照业务定制,不需要 100% 支持
  • 服务框架的性能指标

  • 分布式服务框架的性能肯定比不上本地调用,原因是:网络通信,序列化,反射调用,动态代理这些都会消耗性能;所以需要有性能指标
  • 1-高性能:在同等资源占用情况下,单服务提供者的 TPS 要尽量高
  • 2-低延时:在同等资源占用情况下,服务调用延时要尽量低
  • 3-性能线性增长:如果增加了服务提供者,整体性能要能够线性增长
  • 4-可靠性:服务注册中心的可靠性,网络链路的可靠性
  • 服务治理需要哪些功能

  • 服务运行态监控,例如通过路由导流,限流,服务降级,动态控制超时时间
  • 服务监控,性能统计,报表,报警
  • 服务生命周期管理
  • 故障快速定位
  • 服务安全

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/161876.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android】Android Framework系列---CarPower深度睡眠STR

Android Framework系列—CarPower深度睡眠 之前博客说了CarPower的开机启动流程 这里分析一下,Android CarPower实现深度睡眠的流程。 首先,什么是深度睡眠(Deep Sleep)? Android进入Deep Sleep后,关闭屏幕、关闭CPU的电源,保持…

国内某发动机制造工厂RFID智能制造应用解决方案

一、工厂布局和装备 国内某发动机制造工厂的装配车间布局合理,设备先进,在这个5万平方米的生产区域内,各个工位之间流程紧密,工厂采用了柔性设备,占比达到了67%,数控化率超过90%,自动化率达到了…

Android java Handler sendMessage使用Parcelable传递实例化对象,我这里传递Bitmap 图片数据

一、Bundle给我们提供了一个putParcelable(key,value)的方法。专门用于传递实例化对象。 二、我这里传递Bitmap 图片数据,实际使用可以成功传统图像数据。 发送:Bundle bundle new Bundle();bundle.putParcelable("bitmap",bitmap);msg.setD…

亚马逊 JDK下载地址

下载地址 https://docs.aws.amazon.com/corretto/选择版本 选择操作系统 比如 windows64 位 可以选择安装包或者解压版本 msi 的为安装版 zip 的为解压版

删除链表的倒数第 N 个结点

LeetCode 19. 删除链表的倒数第 N 个结点 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *n…

【Linux系统化学习】开发工具——gdb(调试器)

个人主页点击直达:小白不是程序媛 Linux专栏:Linux系统化学习 个人仓库:Gitee 目录 前言: gdb版本检查和安装 Debug和Release gdb的使用 其他指令 前言: 前几篇文章分别介绍了在Linux下的代码编辑器、编译器。…

python 深度学习 解决遇到的报错问题9

本篇继python 深度学习 解决遇到的报错问题8-CSDN博客 目录 一、can only concatenate str (not "int") to str 二、cant convert np.ndarray of type numpy.object_. The only supported types are: float64, float32, float16, complex64, complex128, int64, in…

MATLAB - Gazebo 联合仿真 —— 使用 UR10 机械臂检测和采摘水果

系列文章目录 文章目录 系列文章目录前言一、设置 Gazebo 仿真环境二、在 Gazebo 中模拟和控制机器人2.1 概述2.2 任务调度器2.3 感知和目标生成系统2.4 运动规划2.5 机械臂和关节控制系统 三、分配用于控制机器人的参数3.1 定义机器人模型和运动规划参数,3.2 定义机…

历法、节日、节气

目录 一,阳历、阴历、公历、农历 1,阳历、阴历 2,公历,农历 二,双历合并 1,组成要素 2,一年 3,一月 4,一日 三,闰法则 1,闰秒 2&#…

分布式单元化

一 分布式单元化 1.1 两地三中心 顾名思义,两地指的是两个城市:同城,异地。三中心指的是三个数据中心:生产中心、同城容灾中心、异地容灾中心。 在同一个城市或者临近的城市建设两个相同的系统,双中心具备相当的业…

【漏洞复现】Webmin 远程命令执行(CVE-2019-15107)

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞验证 1.5、深度利用1、反弹Shell 1.6、修复建议1.7、参考链接 说明内容漏洞编号CVE-2019-15107漏洞…

如何发布自己的golang库

如何发布自己的golang库 1、在 github/gitee 上创建一个 public 仓库,仓库名与 go 库名一致,然后将该仓库 clone 到本地。 本文这里使用 gitee。 $ git clone https://gitee.com/zsx242030/goutil.git2、进入项目文件夹,进行初始化。 $ go…