解构BAT微服务框架设计

开课吧开课吧锤锤2021-04-21 18:36

    微服务架构是一种流行的软件架构,它是由一组小服务组成的应用。这组服务往往提供特定的业务能力,通过轻量级的通讯协议进行通讯,并且能够独立部署。

    正因为上面的优点,微服务架构已经成为了主流软件开发架构。为了帮学员们厘清微服务架构的难点,4月20日的《HelloWorld公开课》,前百度环境音乐CTO,中国机械出版社签约作家肖爱良老师带你解构BAT大厂微服务最佳实践。

    腾讯TARS微服务框架

    每家的微服务架构都殊途同归、大同小异。以腾讯的TARS架构为例,其优势在于它是一个业务统一开发、运营、监控的框架,站在开发的角度可以简单、高效的快速部署。站在测试的角度,可以快速进行集成,进行自动化测试。

    从运营的角度,你的服务越来越多,如何对这些服务进行统一的调度和管理,这里面就涉及了很多技术体系,比如容错/容灾,部署/发布,监控,服务治理等等,这些TARS都有非常优秀的解决方案。其实基本所有的微服务架构都是从开发、测试、运营这三个角度来构建的。

    与其他架构相比,TARS可以根据接口描述文件,即可自动生成客户端和服务端的相关通信代码,这意味着,你只需关注业务逻辑如何实现便可对外提供服务。TARS可与组件管理、代码扫描、测试等多种工具平台灵活对接,助力代码质量问题早发现快修复。

    在高并发方面,TARS支持根据网络及服务端状态智能就近调度。同时还提供IDC、SET分组等功能,满足更丰富的个性化调度需求。为了防止因访问量突增或服务器故障造成系统崩溃,TARS通过非阻塞式的异步请求队列,并对队列的长度进行监控,来保障系统的正常运行。其他诸如负载均衡、容错保护、过载保护、集中配置、数据监控等特性,可以参考下图。

Java

    TARS特性一览

    这是TARS的架构拓补图,在最右侧的公共层包含业务常用的组件,比如异常、发布平台、配置中心等。上面绿色组件就是常用的注册中心,这里就是我们会经常使用到的zk等组件,最下面的就是服务节点和业务Server。

Java

    TARS框架另一个特点就是加入了IDC分组(自动区域感知)功能,为了加快服务间的访问速度,减少跨地区、跨机房调用带来的网络资源消耗,减少网络故障带来的影响,框架提供了跨地区、跨机房,就近接入的功能。

Java

    AlibabaDubbo微服务框架

    ApacheDubbo是一款高性能、轻量级的开源JavaRPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。还是老规矩,先来看下它都有哪些特性

Java

    DUBBO值得一提的就是它的升级性,当服务集群规模进一步扩大,带动IT治理结构进一步升级,需要实现动态部署,进行流动计算,现有分布式服务架构不会带来阻力。下图是未来可能的一种架构

Java

    下图是Dubbo的分布式服务调用容灾架构设计图,当然实际设计要比这复杂的多,我们先挑最根本的方法来说。图片中上面是消费者,下面是服务的提供者,分别有A、B两个机房。

    机房A发布服务的时候,要同时向A、B两个机房发布服务。如果机房B的本地服务失败挂掉后,可以通过Zookeeper的注册中心去调用机房A的服务。这是最基本的容灾架构设计原理。

 Java

    百度Brpc微服务框架

    Brpc是百度开源的一种微服务框架,Brpc支持SpringBootStarter和SpringCloud的服务注册发现。并支持支持多Zookeeper、Consul、List、File、DNS等多种naming服务。在协议方面,Brpc几乎支持市面上所有的主流协议。

    baidurpc

    sofa协议

    hulu协议

    nshead+protobuf协议

    http+protobuf/json协议

    publicpbrpc

    stargate

    dubbo协议

    这是Brpc的核心架构图,其实你可以看到,与其他框架相比,Brpc在独特性上面相对弱了一些,基本上它有的功能,其他框架都有。

    从下面的架构图可以看到,最上层是通道的选择,通过并行通道或者分区通道进入服务的选择,Naming相当于注册中心,LoadBalancer是负载均衡服务。最下层Proteocol为协议层,当你的消息传输时是选择http格式还是nshead格式,要不要进行压缩处理,这些都在这个层级完成。

Java

    当然,无论是TARS框架、Dubbo框架还是Brpc框架,要说的内容远远不止这些,比如阿里巴巴除了Dubbo外,还有SofaRpc框架,如果有同学想进一步完整的了解这些微服务框架背后的原理,可以点击全面剖析BATJ微服务架构设计观看公开课的视频回放!

    同时,热心的小开为大家准备了课程的讲义PPT和课程思维导图呦,想要这些资料的同学可以点击下方图片

Java

    开源RPC框架汇总

    国内

    Dubbo:http://dubbo.io

    Motan:https://github.com/weibocom/motan

    Dubbox:https://github.com/dangdangdotcom/dubbox

    RPCX基于Golanghttps://github.com/smaillnest/rpcx

    Navi&Navi-pbrpc:https://github.com/neoremind/navi-pbrpc

    brpc:htp://github.com/brpc/brpc

    国外

    Thriftfromfacebook:https://thrift.apache.org

    Avrofromhadoop:https://avro.apache.org

    Finaglebytwitter:https://twitter.github.io/finagle

    gRpcbyGoogle:http://www.grpc.io

    Hessianfromcuacho:http://hessian.caucho.com

    讲师介绍

    肖爱良(Solomon),前百度环境音乐CTO&架构师、全球海量专利数据项目负责人中国机械出版社签约作家《深入理解Dubbo工业级架构设计》图书作者(目前市面上唯一完整的架构设计书籍)

    12年互联网大厂经验,在互联网音乐、电商、大数据、高并发、数据挖掘等领域有丰富的实战经验。擅长于通信协议、微服务架构、框架设计、消息队列、服务治理、PAAS、SAAS等领域

    《Hello,World公开课》是由开课吧推出的面向广大开发工程师的免费加餐课,集结业内名师大咖,聚焦热门技术和实战解决方案,以专业知识分享交流为桥梁,链接正在创造世界的一群科技主力们,向初心致敬,为技术发烧。无论你是初入职场的应届生,还是准备升职加薪的职场精英,相信这里都有你需要的养料。

小编推荐:

    《Hello,World公开课》开发者都要紧跟的2021技术趋势

    《Hello,World公开课》所有人都要懂的人工智能简史课

    《Hello,World公开课》实战解析机器学习中的最优化算

有用
分享