zoukankan      html  css  js  c++  java
  • 服务框架基础知识总结

    在软件系统组成越发复杂的今天,如何保证每个服务间的通信,是系统架构师必须考虑的重要一点。

    作为一名软件测试工程师,了解系统架构以及服务间的通信过程及原理,对我们开展测试工作有很大的帮助。

    这篇博客,简单介绍下常见的一些通信服务框架基础知识。。。

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

     

    要组成一个基本的通信服务框架,最起码需要这三部分:统一的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),都有可视化的管理界面,如下:

    以上,即为通信服务框架基础知识的总结,仅供参考,更多内容,请自行探索。。。

  • 相关阅读:
    为什么一看编程技术文章就这么兴奋呢?
    今天弄会了如何使用VB6使用AutoCAD提供的dll操作AutoCAD了
    简单工厂模式没想像中的难啊
    Linq本质论,C#3.0的特性。写的太好了!收藏!
    struct和class的区别
    饿了
    解决Eclipse 3.3+lomboz无法启动的问题
    IE8通过Acid2了
    Linux档案/目录 权限及修改
    Linux 初识man、info
  • 原文地址:https://www.cnblogs.com/imyalost/p/10274797.html
Copyright © 2011-2022 走看看