沧州三亚菏泽经济预测自然
投稿投诉
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产
菏泽德阳
山西湖州
宝鸡上海
茂名内江
三亚信阳
长春北海
西安安徽
黄石烟台
沧州湛江
肇庆鹤壁
六安韶关
成都钦州

微服务框架的实现舍与不舍

3月19日 夜未央投稿
  生活中充满了各种tradeoff(权衡),编程开发中也是如此。本文将通过实战的角度,分享在开发微服务框架的过程中,针对不同的组件做的一些抉择,包括,协议支持的多少?数据传输采用TCP还是UDP?网络处理是普通处理模型还是定制的epoll?序列化框架那么多,该用哪种?注册中心选哪家?路由方式哪种好,如何限流等等。
  资深工程师晁岳攀(鸟窝)
  嘉宾介绍:Go微服务框架rpcx的作者,拥有20余年的软件开发经验,先后在清华同方、Motorola、微博等公司工作,出版了国内第一本原创Scala图书《Scala集合技术手册》,并在台湾发行了繁体版。Go语言的布道者,在GopherChinameetupGopherChina大会上分享过《Go微服务框架实践》、《Go并发编程》等主题。
  以下是晁岳攀老师在SACC2022大会的演讲实录:
  rpcx微服务框架协议的实现
  事实上,每个拥有一定规模的互联网大厂都有自己的微服务框架。比如,阿里巴巴、哔哩哔哩、百度、今日头条、学而思、好未来等。因为业务繁多需要微服务来划分,中间的调用关系必须通过框架来实现。
  框架独有接口(rpcx)
  如上图所示,采用压缩的方式来实现。第一个是Magicnumber(魔法数字),使用特殊的字节(0x08)来标明Request开头。第二个是Version(版本号),在做微服务设计的时候,要尽量做到协议的兼容性。
  后面几个字节,比如MessageType、Heartbeat、Oneway、CompressType、MessageStatusType、SerializeType、Reserred,使用bit做设置,将其压缩在一起,尽量减少内存的占用。
  接下来,MessageID使用了8个字节的数据。最后是sizeofrestdata,sizeofserricePath,sizeofserriceMethod,sizeofmeta,sizeofpayload等数据的处理。
  框架独有接口(dubbo)
  dubbo的处理方式与rpcx是类似的,它使用两个字节做魔法数,分别是高位和低位。后面是标记它的请求响应、需要往返、事件、序列化ID、状态、RPC请求ID等信息,接下来是消息体数据长度。
  框架独有接口(motan)
  motan的协议设计与rpcx是类似的。grpc是架构在HTTP2。0基础之上的协议,它的请求是RequestHeaders,加一系列的Message。对于请求,EOS(流结束)是通过在最后接收到的数据帧上出现ENDSTREAM标志来表示的。
  ResponseHeaders和TrailersOnly都在单个HTTP2报头帧块中传递。对于响应,流的结束是通过在最后一个接收到的带有Trailers的报头帧上的ENDSTREAM标志来指示的。
  thrift框架中的message表示一次接口调用、接口调用结果或者异常。这个函数中主要是调用相应的write函数来序列和写入thrift的版本、message的name以及seqid等基本信息,name字段是函数的名字。
  如果使用通用的请求,常用的协议有HTTPaccess、RestfulAPI、JSONRPC2。0、WebSocket等。JSONRPC是一个无状态且轻量级的远程过程调用(RPC)协议。从性能的角度来考虑,实现特定的协议是比较常用的一种手段。数据传输
  在协议实现之后,客户端通过哪种传输方式把消息传输给服务端,服务端又通过什么方式将消息返还给客户端。常见的数据传输方式有几种,比如HTTP、TCP、UDP、Unixdomainsocket等。如果想要实现更高性能网络,我们可以在特定网络协议基础之上做数据传输。
  HTTP1。1vsHTTPpipelining
  HTTP1。0的每一次请求都伴随着一次三次握手的过程,并且是串行的请求,增加了不必要的性能开销。HTTP1。1新增了长链接的通讯方式,减少了性能损耗。HTTPPipelining是把多个HTTP请求放到一个TCP连接中一一发送,而在发送过程中不需要等待服务器对前一个请求的响应。
  HTTP1。1vsHTTP2。0vsHTTP3。0
  HTTP1。1安全性不足和性能不高;HTTP2。0完全兼容HTTP1。0,是更安全的HTTP,更快的HTTPS,头部压缩,多路复用等技术充分利用了带宽,降低了延迟。HTTP3。0的底层支撑协议QUIC基于UDP实现,又含TCP的特点,实现了又快又可靠的协议。
  rawTCP
  TCP提供了一个逻辑上的连接,在进行数据传输之前必须建立连接,在数据传输之后必须终止连接。TCP为了保证数据的可靠性,要求有应答机制,应答机制实际上是通过一个基本的序列号和相对应的回应号来进行完成的。TCP本质上是一种面向连接的、非常可靠的数据传输方式,是基于IP协议来做的。
  KCP是一个基于UDP实现快速、可靠、向前纠错的的协议,能以比TCP浪费1020的带宽的代价,换取平均延迟降低3040,且最大延迟降低三倍的传输效果。纯算法实现,并不负责底层协议(如UDP)的收发。
  kcpgo是用go实现了KCP协议的一个库,其实KCP类似TCP,协议的实现也很多参考TCP协议的实现,滑动窗口,快速重传,选择性重传,慢启动等。KCP和TCP一样,也分客户端和监听端。
  Unixdomainsocket又叫IPC(interprocesscommunication进程间通信)socket,用于实现同一主机上的进程间通信。它有SOKCETDGRAM(数据包套接字)和SOCKETSTREAM(流套接字)两种模式,类似于UDP和TCP,但是面向消息的UNIXsocket也是可靠的,消息既不会丢失也不会顺序错乱。网络处理库
  Go基于IOmultiplexing和goroutine构建了一个简洁而高性能的原生网络模型(基于Go的IO多路复用netpoll),提供了goroutineperconnection这样简单的网络编程模式。
  connectionpergoroutine
  虽然goroutine是轻量级的,但也并非创建的越多越好。其中有几个原因,goroutine只负责消息读取解析,当它的数量较大时,会占用很大的内存,消耗大量的CPU资源。
  workerpool是一个Erlang进程池,其中的工作进程是Erlang的genserver模式进程。工作中常用workerpool模式,可以控制goroutine的数量,防止goroutine泄露和暴涨。
  Netpoll是一款Go语言高性能、IO非阻塞(NIO)网络库,专注于RPC场景。由于EpollWait回调之后,SubReactor内是串行处理IO事件的,导致排在最后的事件可能会有长尾问题。序列化方式
  编解码主要有通用跨平台和专有高性能两种方式,通用跨语言库有Protobuf、MessagePack、JSON(标准库JSON、jsoniteratorgo、easyjson等)、XML、Thrift。特定语言的编解码方式有Hessian2、andyleapgencode、colfer、zebrapack。
  序列化方式
  上图参考https:github。comsmallnestgosercomp,我们可以看出,各个序列化方式Marshal与Unmarshal的数据。我们不要把自己的平台限制在某一种序列化方式,而是应该支持定制化,将决定权交给用户。注册中心
  在微服务框架之下,我们要引入注册中心,它是微服务框架依赖的一个基础服务。常见的注册中心有分布式一致性的平台,比如zookeeper(CP)、etcd(CP)、consul(CP)、Eureka(AP)。
  分布式一致性
  分布式注册中心遵循CAP原理,指的是在一个分布式系统中,Consistency(一致性)、Availability(可用性)、PartitionTolerance(分区容错性),三者无法同时满足。
  当满足CA时,要保持数据一致性,就必须进行节点数据的同步;同时要满足可用性,则响应时间必须较短,就要去数据同步时间很短,这样就不能部署太多的节点,也就无法满则高可用性。
  当CP满足时,要进行数据同步,且机器数量较多,这样数据的同步时间就会比较长,无法保证较快的响应。当满足AP时,既要有一定机器数量,又要保证较快的响应时间,就无法进行节点数据的同步。
  国内互联网大厂一般自研注册中心,实现AP系统,来保证可用性。比如,阿里nacos、微博vintage、腾讯PolarisMesh。那么,中小企业如何选择注册中心?可以选择etc,consul,做好zk本地缓存的功能;使用dns、redis、mysql等云服务;采用大厂的AP系统。路由选择
  最简单的方式是利用随机函数选择节点,有无法区分权重;无法根据性能实时调整;无法进行复杂情况下的选择;随机不随机,比如可能出现111112222233333的情况等问题。
  利用轮询的方式选择节点,每个节点可以均匀,压力也平均,但面临无法区分权重;无法根据性能实时调整;无法进行复杂情况下的选择等问题。
  基于权重的随机算法
  基于权重,可以避免随机算法可能的压力集中。Nginx的算法可以平均生成每个节点:smoothweightedroundrobinbalancingalgorithm。
  基于请求的服务和方法,以及请求参数,利用一致性哈希算法,总是选择固定的节点,动态调整节点。
  网络质量优先,client定期测试各节点的网络质量,根据网络质量分配权重。地理位置优先,同机房优先,同区域优先,国内优先。
  基于特殊的需求,允许用户定制,比如正常调用同机房优先;如果失败,第二次从备份机房调用。限流与降级
  降级是临时禁用非核心功能,比如明星出轨、结婚离婚等重大公共事件,秒杀、抢红包等流量激增的时候,功能屏蔽但是不下线。
  限流是客户端和服务端限流,从根上限制,避免无意义的带宽传输;无法避免业务偷偷放量;基于令牌桶和漏桶,需要处理burst场景。测试
  rpc测试的困难,需要客户端和服务端才能真正模拟,持续集成框架机器可能不允许网络连接,配置服务端和客户端略微复杂。网络传输单独测试,客户端和服务端业务测试时使用mock。虚假连接,把客户端请求直接给服务端处理,把客户端请求直接给服务端处理github。comakutzmemconn。
投诉 评论 转载

vivoS12,一款低价高配的手机,值得你作为日常使用的手机说真的,了解vivoS系列的手机用户,内心应该清楚,这个系列的机型,综合性价比还是蛮高的。下面来说一下vivoS12这款手机,真正的一款低价高配的手机,比较适合普通人,或……千元机水平再提高!OPPOA57获用户认可,流畅用三年完全够手机市场中每个品牌似乎都在冲击高端,给人一种手机越来越贵的感觉。但其实在冲击高端的基础上,很多品牌也并没有放弃入门以及中端市场。比如OPPO就基于不同消费需求完成了几乎所有价位……旅行笔记唯有山,立地而起,气势磅礴分享旅途智慧,收集美好零碎。你是不是耳闻冠豸山已久,但对动身前往目的地,还有一丝的不确定,那不如看看那些来过冠豸山的人所写的旅行笔记,看看他们是怎么评价冠豸山的吧。图、文……黄磊的小女儿,被全网羞辱。。黄磊女儿被骂前几天,孙莉在社交平台发了二女儿烫头发的VLOG。视频里的妹妹,开心又俏皮地享受着烫发的过程,期待着成果。我也满怀期待点开评论区,想着一起夸夸这个……为什么现在的软件都要求读取相册通讯录等多种权限,安全吗?随着科学技术翻天覆地的发展,曾经贵不可攀的手机已经成为了人手必备的常见品。手机在我们的生活中所扮演的角色越来越重要,甚至有网友贴切的说:一部手机在手,天下我都有。一丝一毫也不夸……陈梦苦战7局被淘汰,王曼昱大逆转晋级决赛,国乒包揽女单冠亚军7月23日,布达佩斯冠军赛打响首场女单半决赛较量,国乒两大奥运冠军陈梦与王曼昱再次上演神仙打架,结果,王曼昱在总分02落后下制造大逆转好戏,七局大战淘汰陈梦,率先闯进女单决赛,……提到金鹰奖,杨紫热巴粉丝就互撕热巴没拿奖,就一定是杨紫吗?在迪丽热巴那届之前,金鹰奖,还是非常有含金量的。而且,每一届的女神,不管是热度,还是代表作,都拿得出手,凭借获奖的作品,也是当下最热的。赵丽颖那届是凭借《花千骨》,……机器狗可能会去月球吗?在苏黎世联邦理工学院和苏黎世大学创建的机器人探险家GLIMPSE已进入太空勘探资源竞赛的最后一轮。他们的长期目标是让机器人探索月球的南极地区。月球的南极地区被认为包含许多……华为Petal出行国内多城上线聚合国内优质网约车7月4日,在华为手机会员中心APP中,应用众测版块上线了华为Petal出行快应用,一时间引发网友热议,华为这是要做打车软件了?据了解,Petal出行是华为最新推出的一款聚合国内……红米note10pro记录生活2021年11月粤语有句老话:新屎坑三日香。所以2001年10月27日买了这手机,那么11月份就拍得特别多,因为还很香嘛!其实是因为当时的状况有好转,出门的机会多了也比较敢出门了,因此使……微服务框架的实现舍与不舍生活中充满了各种tradeoff(权衡),编程开发中也是如此。本文将通过实战的角度,分享在开发微服务框架的过程中,针对不同的组件做的一些抉择,包括,协议支持的多少?数据传输采用……爱就是在合适时候恰如其分的放手小小的宝贝如同一粒种子,是一个复杂的生命体,他从母体出生后他就是一个独立的个体,我们第一次做父母,所以总想给他最好的,我们往往把他当作需要特殊照料的弱者,反而让他失去宝贵的成长……
促销降价降了个寂寞?2023年3月全国汽车市场回顾PSC将为香港国际Web3枢纽贡献力量2023中超联赛第2轮武汉三镇vs北京国安开票了你不知道的尼泊尔冷知识一写作业就鸡飞狗跳?不是这届孩子太难带,是你不了解愤怒的真相5G技术应用给化工企业拧紧安全阀睿智的女孩!陈萌去大衣哥家里做客,面对村民拍摄坚决拒绝4年顶薪续约?拜拜了勇士!逼着追梦格林投奔湖人一个人不再主动联系你时,最好的回应是,做好三件事童行消防队,致敬火焰蓝新城案例巫山旅游品牌VIS设计迎泽区郝庄镇东祁家山村昔日知青窑洞变身民宿迎发展双面呢子大衣是什么料子跑步戴耳机有危害吗雪花膏有什么作用保持皮肤健康湿润有弹性蜜蜂怎么奖励饲喂宝宝菠萝饭的做法有哪些公共场合说话礼仪心语(一)比华为mate50P还强!荣耀Magic5采用4颗5000万我的妈妈优秀550字作文内容营销变了!种草新打法是什么?厌烦工作者如何找回当年热情

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找