首页 > 其他分享 >服务框架基础知识总结

服务框架基础知识总结

时间:2022-11-06 18:45:24浏览次数:68  
标签:总结 服务 框架 基础知识 选择 RPC MQ 注册

转载:https://www.cnblogs.com/imyalost/p/10274797.html

参考:《京东基础架构建设之路》

 

要组成一个基本的通信服务框架,最起码需要这三部分:统一的RPC框架、服务注册中心、管理端。

一、RPC框架

RPC(Remote Procedure Call),即远程过程调用。

百度百科:RPC框架

1、选择RPC框架的注意事项

①、代码规范:是否有基于某些标准协议的代码生成,还是无代码入侵;

②、通信协议:TCP/HTTP

③、序列化协议:是二进制还是文本格式,是否需要跨语言、性能如何;

④、I/O模型:是同步还是异步,是阻塞还是非阻塞模式;

⑤、负载均衡:负载均衡模式是客户端软负载、代理模式,还是服务端负载;

如果选型的框架为开源框架,还需要考虑以下几点:

①、成熟度:学习成本、难易程度、社区热度、文档是否详细、是否有专门团队维护更新、稳定性如何;

②、可扩展性:是否有SPI扩展,是否支持上下兼容;

③、跨语言:是否支持跨语言;

④、性能:作为基础服务,性能必须出色,否则服务框架本身会成为瓶颈;

 

2、开源框架对比表

 

3、选型建议

①、与前端交互:适合选择短连接、跨语言的框架,比如RESTful、gRPC;

②、纯粹的后台交互:适合选择长连接、序列化为二进制的框架,比如Thrift、Dubbo,这样相对更高效;

③、小型团队:如果是第一次使用,建议选择规范化的RPC框架,比如Thrift、RESTful、gRPC;

④、大型团队:大型团队一般已有大量业务代码,最好选择无代码入侵的框架,比如Dubbo、RESTful,否则改造成本将变得很大;

 

二、服务注册中心

注册中心相当于服务提供者和服务调用者之间的中间人,其提供服务注册、服务发现、服务状态检测等基础服务,在服务治理中的作用及其重要。

1、选型注意点

①、服务注册:接收注册信息的方式;

②、服务订阅:返回订阅信息的方式,push或者pull;

③、状态检测:检测服务端的存活状态;

如果选择开源的注册中心,则需要考虑如下几点:

①、成熟度:学习成本、社区热度、文档是否详细等;

②、维护成本:注册中心日常维护;

③、数据结构:能否快速定位结果,是否可以进行遍历筛选;

④、性能和稳定性:良好的性能和稳定性,是服务中心所必须具有的特质;

⑤、CAP原则:即数据一致性、服务可用性、分区容错性。只能三选二,要么选择CP(关注一致性),要么选择AP(服务可用性);

CAP原则:百度百科

 

2、开源服务中心对比表

 

3、选型建议

①、规模小:建议选择CP,RPC框架可直接接入数据源;

②、规模大:建议选择AP,RPC框架不可以直接接入数据源;

③、跨机房/地域:尽量不要选强一致性协议的注册中心,因为跨机房跨地域本身带来的时延性会对数据一致性造成很大干扰;

PS:RPC框架必须具有注册中心不可用情况下的容灾策略,服务状态检测十分重要!!!

 

三、客户端

客户端即可视化管理的部分,可以通过web界面等方式,对服务提供者和调用者等相关信息进行可视化展示和管理操作。

比如常见的MQ(包括Active MQ、Scoket MQ和Rabbit MQ),都有可视化的管理界面,如下:

标签:总结,服务,框架,基础知识,选择,RPC,MQ,注册
From: https://www.cnblogs.com/ceshi2016/p/16863340.html

相关文章

  • Java 线程池之ThreadPoolExecutor学习总结
    前提javaversion"1.8.0_25"池简述软件开发活动中,我们经常会听到数据库连接池、内存池、线程池等各种“池”概念,这些“池”到底是什么东西呢?程序的世界里,我们可以将池简单......
  • Java 线程池之ThreadPoolExecutor学习总结
    前提javaversion"1.8.0_25"池简述软件开发活动中,我们经常会听到数据库连接池、内存池、线程池等各种“池”概念,这些“池”到底是什么东西呢?程序的世界里,我们可以将池简单......
  • 10.31-11.4 周末总结
    目录一、ATM项目二、编程思想1.面向过程2.面向对象三、对象与类四、类与对象的创建1.类的语法结构2.类的定义与调用1.定义类2.查看名称空间的方法1__dict__方法2点号运算......
  • 2022-2023-1 20221418 《计算机基础与程序设计》第十周学习总结
    2022-2023-120221418《计算机基础与程序设计》第十周学习总结作业信息这个作业属于哪个课程(2022-2023-1-计算机基础与程序设计)这个作业要求在哪里(2022-2023......
  • python学习第五周总结
    面向对象前戏之人狗大战#编写代码简单的实现人打狗狗咬人的小游戏(剧情需要)"""推导步骤1:代码定义出人和狗"""person1={'name':'jason','age':18,......
  • 20221427第十周学习总结
    2022-2023-120221427《计算机基础与程序设计》第十周学习总结作业信息班级链接(2022-2023-1-计算机基础与程序设计)作业要求(2022-2023-1计算机基础与程......
  • 3.前端框架Vue
    Vue是一套前端框架,免除原生javaScript中的DOM操作,简化书写。基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上官网:http://cn.vuejs.orgv-m......
  • 2022-2023-1 20221409 《计算机基础与程序设计》第十周学习总结
    2022-2023-120221409《计算机基础与程序设计》第九周学习总结作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里如2022-202......
  • 周总结(6)
    周总结(6)面向对象编程思想1.面向过程编程'按流程操作,一步一步得到答案'2.面向对象编程'对象就是容器,用来将数据与功能整合到一起'类似与模块内部含有数据与功能。"......
  • 第六周总结
    目录编程思想面向对象之类与对象动静方法继承的本质名字的查找顺序经典类与新式类派生方法编程思想1.面向过程编程:按照固定的流程解决问题。2.面向对象编程:数据与功能的......