最新要闻
- 江阴枪击案嫌犯或已跟踪受害人半年具体是什么情况
- 哨兵模式立大功 理想L9遭遇奥迪“开门杀”:清清楚楚拍下全过程
- 天天动态:1.6亿赔款谁来出?承重墙被砸现高楼内仍有人居住 网友称楼体扭曲变形
- 国产最强AI来了!讯飞星火认知大模型发布:中文超越ChatGPT 英文已接近
- 要闻:传比亚迪电池配套欧版特斯拉 官方:不予置评
- 快克智能(603203):短期承压不改趋势 半导体业务落地打开新空间|环球讯息
- 全球报道:没有金刚钻别揽瓷器活 特斯拉Model Y涉水越野:“脸”都烂了
- 同比猛涨128% 奇瑞4月销量出炉:狂卖12.7万辆站稳自主第一梯队 天天快播报
- 承重墙被砸1.6亿赔款谁来出? 法律人士:租户、施工队责任重大
- 中国电子云成为政企信创促进中心首批成员单位
- 科济药业AB011联合用药一线治疗胃癌获批临床 全球热文
- 美剧《西游ABC》新海报发布:杨紫琼观音、吴彦祖美猴王下凡_世界资讯
- 男子花32万买二手奔驰获赔98万:车商隐瞒是泡水报废车
- 教师节是中国的还是国际的?教师节为什么定在9月10号?
- 天天亮点!手机内存卡怎么加密码_手机内存卡怎么加密
- 旷亮无比的意思是什么?旷亮无比的天空仿写三个词语
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
分布式场景下,如何对外提供易变的服务,打造可靠的注册中心?
摘要:本文讲了关于服务发现的很多干货内容,核心内容为服务发现组件的选择、网关的介绍、 客户端侧如何发给已发现的服务。
本文分享自华为云社区《分布式场景下,如何对外提供易变的服务,打造可靠的注册中心?》,作者:breakDawn。
【资料图】
随着云原生的概念越来越火,服务的架构应该如何发展和演进,成为很多程序员关心的话题。大名鼎鼎的《深入理解java虚拟机》一书作者于21年推出了新作《凤凰架构》,从这本书中可以看到当前时下很多最新的技术或者理念。
本博文将沉淀发布这本书的学习笔记和思考。 如果希望了解更加详细的内容,欢迎购买该书继续详细学习。
从类库到服务
1 服务发现
1.1 服务发现的意义
以前是DNS以及DNS之后的负载均衡承担了服务地址翻译的一部分能力,但是随着微服务的流向 服务的非正常掉线、重启、上下线越来越频繁。zk曾经活跃过,但是过于底层,需要用户自己做很多额外工作。因此专用于服务发现的 eureka出现并被纳入spring cloud。后来就是Consul和nacos继承了eureka的衣钵。
如何在基础设置和网络协议层面,对应用尽可能无感知、方便地实现服务发现是目前服务发现的一个发展方向
1.2 服务发现组件中CA和AP的抉择
服务注册中心非常关键, 一旦崩溃将不可使用,因此必须最大程度保证可用。例如搞多个注册中心节点提供服务,不断复制各自的信息,随时提供服务。
但是复制信息又要即时响应的过程会造成结果的不一致,缺乏一致性。
- Eureka优先保证可用性,牺牲一致性, 选择异步复制来交换服务注册信息,同时并不会强行等待复制成功,有新服务注册对应节点可立刻宣布该服务。适合节点关系相对固定, 服务一般不会频繁上下线的系统。
- Consul是优先保证一致性,牺牲可用性。使用Raft算法,要求多数节点写入成功后服务的注册才算完成,严格保证了一致性。同时采用gossip协议,支持多个数据中心逐渐的服务同步。
选择哪个方案,一定程度上是基于产品现实而做的决策。当系统C因为网络问题,变成了A\B两个分区后,是否对你的服务有重大影响?是否是有状态的系统? 如果是,那么选择对一致性严格要求的Consul,如果不是,则选择Eureka。
1.3 注册中心的实现
在分布式KV存储框架上单独做的服务发现
典型代表: zk、 etcd。etcd采用Raft算法,zk采用的zab算法是MultiPaxos的派生算法。
共同特点是在整体较高复杂度的架构和算法的外部,维持着极为简单的应用接口,只有少量CRUD和watch的api, 所以要实现完整的服务发现,要做很大量的工作,只有自研大厂才会这么做,小厂不会首选耗费大量人力去从零实现。
基础设施实现服务发现
典型代表是k8s里用的skyDNS、 coreDNS。工作原理是从API-server中监听集群服务变化,根据服务生产DNS记录存到etcd中, k8s设置每个pos的dns服务地址, 调用服务时再做域名转换。
是CP还是AP取决于后端如何存储,用etcd就是CP,用内存赋值就是AP。好处是对应用透明,只依赖底层的HTTP和DNS,不依赖语言等。缺点是要自己额外做负载均衡、远程调用、服务缓存期限各种能力适配
专门用于服务发现的框架和工具
典型代表: Eureka、Consul、Nacos。
坏处在于对应用不是透明的,必须在应用中要去适配服务注册框架,但能够为编码开发、快速扩展能力提供方便。
2 网关路由
2.1 网关的职责
微服务网关的首要职责就是作为统一的出口对外提供服务, 将外部访问网关地址的流量,根据适当的规则路由到内部集群中正确的服务节点上。同时再作为流量过滤器增强使用
因此“网关= 路由器(基础职能)+ 过滤器(可选职能)”
网关的性能主要取决于他们如何处理代理网络请求,也就是他们的网络IO模型
2.2 网络IO模型介绍
同步和异步的区别, 是指调用端发出请求后,是否需要一直等待,是否会铜鼓哦状态变化和回调来通知矗立着。
阻塞和非阻塞是针对请求处理过程而言,调用请求返回结果之前,处理线程是否会被挂起。
阻塞IO、非阻塞IO、 多路复用、信号驱动IO都属于同步IO。
- 阻塞IO是发现结果没返回,会挂起线程,直到结果返回。
- 非阻塞IO是会不断轮询询问是否完成、
- 多路复用IO是阻塞IO的一种,但他只有一个监听线程在阻塞, 当有某个事件结果返回,再进行对应处理。
- 信号驱动IO和异步IO有点像, 但是异步IO是数据已经被传回到调用方了,然后通知, 而信号驱动IO只通知完成了,但是数据还要调用方重新阻塞式地去获取。
Linux系统下实现高并发编程时仍以多路复用IO模型为主。
网关里, zuul1.0网关是用阻塞IO模型,碰到IO密集型就很浪费上下文切换的性能, zuul2.0基于netty-server实现异步IO模型处理请求, 性能提升20%。可以自行指定 select、epoll等并发模型。
网关应该尽可能轻量、 成熟、 更成熟健壮的物理设施。
2.3 BFF网关
网关会针对不同的前端,聚合不同的服务,提供不同的接口和网络访问协议支持(例如http和grpc都能提供)
3 客户端负载均衡
用户客户端请求->某地域机房ip所在的服务网关->选择发往对应业务服务所属的负载均衡器->发给真正的服务
其中第三步的“发往业务服务负载均衡器”是有点浪费的, 从机房内网发出的服务请求, 绕道了网络边缘的负载均衡器上了,又重新回了内网。
3.1 客户端负载局衡器
就是在 机房网关->服务负载均衡器->服务节点的这个过程中, 去掉负载均衡器, 直接把负载均衡能力内置到机房网关的能力中。其他要用到负载均衡的场景也可以这样操作不一定局限于网关。
优点:
- 负载均衡器和服务之间的信息是进程内方法调用,不存在网络开销
- 不依赖集群边缘的设置,都是集群内部循环
- 避免了负载局衡器的单点问题。
- 可以针对每个服务实例单独设置负载均衡策略更灵活
缺点:
- 负载均衡代码受限于服务本身代码实现, 如果是go、python等会导致不得不适配多份负载均衡代码
- 负载均衡器会占用服务的一部分资源或者互相影响
- 当服务被攻破, 下游所有节点的信息也暴露,信任关系不安全
- 经常要轮询、上线、下线,负担不小
3.2 代理负载均衡器
基于k8s、docker部署的服务, 一般都有一个pod, 选择在pod的边缘部署一个代理负载均衡器(也叫边车代理),相当于是同一个节点内,部署了一个进程。是服务网格的一个概念。
好处
- 不再受语言限制
- 避免服务进程要频繁轮询造成浪费, 直接让控制平面给pod的边车代理
- 更安全也更容易实现对调用链路的详细统计。
3.3 地域和区域
region是地域的概念。
集群内部流量不会跨地域。
zone是区域的概念, 地理上是同一个地域,但是地域内可能放了不同的机房,每个大机房就是一个区域。
如果追求高可用,则系统要部署在多个区域中。
如果追去低延迟, 则应该所有服务都在同一个区域中。
相关思考
本文讲了关于服务发现的很多干货内容,核心内容为服务发现组件的选择、网关的介绍、 客户端侧如何发给已发现的服务。如果准备进行服务发现的选型工作,可以仔细阅读原文进行学习和了解。
文中关于注册中心的实现原理有很多种类型, 其中有提到一个k8s里用的 coreDNS。那部分笔记中关于coreDns的原理 比较少。而华为云的CCE容器引擎就包含了CoreDNS插件,他们的产品资料中给出的路由请求流程如下:
另外对于专门用于服务发现的框架和工具,华为云的CSE微服务引擎里关于服务注册发现的示意图如下:
微服务启动时,将实例信息注册到CSE,微服务需要调用其他微服务的接口时,从CSE查询实例信息,并将实例信息缓存到本地,缓存会通过事件通知、定时查询等机制更新;通过本地缓存的地址信息,实现微服务之间的点到点调用。
同时也支持基于上述提到的3个服务发现代表,实现优化上下线的能力:
点击关注,第一时间了解华为云新鲜技术~
关键词:
分布式场景下,如何对外提供易变的服务,打造可靠的注册中心?
每日消息!涨知识!你不知道的中国手机号码的编码和划分规则
汽车的供电状态
江阴枪击案嫌犯或已跟踪受害人半年具体是什么情况
哨兵模式立大功 理想L9遭遇奥迪“开门杀”:清清楚楚拍下全过程
天天动态:1.6亿赔款谁来出?承重墙被砸现高楼内仍有人居住 网友称楼体扭曲变形
国产最强AI来了!讯飞星火认知大模型发布:中文超越ChatGPT 英文已接近
要闻:传比亚迪电池配套欧版特斯拉 官方:不予置评
当前区块链研究领域的前沿技术和研究方向
快克智能(603203):短期承压不改趋势 半导体业务落地打开新空间|环球讯息
全球报道:没有金刚钻别揽瓷器活 特斯拉Model Y涉水越野:“脸”都烂了
同比猛涨128% 奇瑞4月销量出炉:狂卖12.7万辆站稳自主第一梯队 天天快播报
环球热头条丨AIGPT中文版(无需魔法)最简单的方式实现AI绘画
当前聚焦:热门的免费 API 合辑整理
.NET几种微服务框架,你用过吗?
热点聚焦:两个系统之间跳转免密登录
承重墙被砸1.6亿赔款谁来出? 法律人士:租户、施工队责任重大
中国电子云成为政企信创促进中心首批成员单位
科济药业AB011联合用药一线治疗胃癌获批临床 全球热文
梦幻西游检查更新失败是什么原因?梦幻西游检查更新失败怎么解决?
美剧《西游ABC》新海报发布:杨紫琼观音、吴彦祖美猴王下凡_世界资讯
男子花32万买二手奔驰获赔98万:车商隐瞒是泡水报废车
戴尔xps13怎么增加固态硬盘?戴尔xps13笔记本参数
富士宝电磁炉质量怎么样?富士宝电磁炉故障大全
多玩盒子是什么时候出的?多玩盒子怎么卸载?
索尼投影机灯泡时间怎么清零?索尼投影机驱动怎么安装?
教师节是中国的还是国际的?教师节为什么定在9月10号?
天天亮点!手机内存卡怎么加密码_手机内存卡怎么加密
旷亮无比的意思是什么?旷亮无比的天空仿写三个词语
林书豪现在在哪个球队?林书豪的父母简介
生肖是按农历还是阳历计算的?96属鼠跟什么属相更配?正确的属相划分时间是什么?
什么是文创产品?文创产品的功能有哪些?文创发展趋势是什么?
一文详解如何在 ChengYing 中通过产品线部署一键提升效率-每日热门
今日快看!存货、负债、坏账持增 经营现金流量净额转负 宏工科技能过会么
特斯拉索赔500万名誉维权案将开庭 被告方为“刹车失灵”车主张女士:积极应诉 每日热议
达人契约能增加多少伤害(达人契约)
MYSQL数据库基础--MySQL子查询怎么操作?_世界百事通
易基因:2023年植物表观转录组研究的最新进展(m6A+m5C)|深度综述
32位进程设置大地址(3G)空间-世界滚动
Unix教程_编程入门自学教程_菜鸟教程-免费教程分享 最新消息
讯息:抖音芭比q是什么意思梗_网络语芭比q是什么意思
天天实时:5月26上映!迪士尼发真人版《小美人鱼》极清剧照:黑小美人鱼好看吗?
德国进口:Knoppers榛子巧克力威化饼干29.9元/13包|环球热闻
漫威回归内地首作!《黑豹2》今日上线网播:“优爱腾”同步上线
天天最新:智联招聘:应届毕业生选择单位就业比例升至57.6%
解析智慧园区的发展瓶颈
Linux下搭建Python2.7环境 环球观焦点
今日快看!git~分支管理规范
余维佳退出?世纪证券官宣新董事长和新总经理,去年投行资管双丰收|世界消息
立夏吃一蛋力气长一万!夏天模式开启:你那有什么习俗?_每日热讯
4999元起!小米13/13 Ultra限量定制色今日首发:三款新配色|全球热议
39999元买它!索尼:我们是游戏电视的引领者
强劲非农数据重燃紧缩预期 美债收益率全线回升 全球快资讯
凝望是什么意思_凝望的意思 天天微头条
环球新资讯:4倍降温吹凉风!小米米家智能蒸发式冷风扇上架:众筹价489元
全球最资讯丨Mate50立功!华为站起来 跻身前十背后:4G打败5G 品牌溢价高买手机就认它
天天热资讯!学系统集成项目管理工程师(中项)系列18a_进度管理(上)
恩施州气象台发布雷电黄色预警【III级/较重】【2023-05-06】
世界热门:ChatGPT最全提示词Prompts总结,看这一篇就够了!
Unity开发Hololens2—交互发布配置
中国高铁真狂魔!一张照片里 五条隧道、五座大桥 观热点
喜欢在沙里挖陷阱的小虫子叫啥?儿时经常玩 如今一斤卖6000 世界观速讯
环球今日报丨研究称脂肪过多会降低智商:吓得我感觉吃个烧烤压压惊
全球热议:火锅里咬起来咯吱咯吱的“贡菜”:究竟是什么?
30%的苹果税不好赚了 iOS 17大改:第三方应用来了
环球视讯!BLG晋级正赛,队内语音很欢乐,Bin想冲进敌方泉水,随便赢
大一一封家书范文500字(热门27篇) 环球动态
灵跃武器怎么转换_灵跃武器怎么获得
菲梦少女第三季为什么禁播_菲梦少女第三季免费版_天天快资讯
千万粉丝网红吃播小贝饿了带货因虚假宣传被罚46万:调理牛排宣传为原切
全球短讯!AMD最强核显称霸掌机!干掉RTX 2050、逼近GTX 1650 Ti
金仓数据库KingbaseES 两表关联Update的两种写法与性能
天天日报丨[HNCTF 2022 WEEK2]
天眼看湾区|广州狮岭皮具商会会长期待牵手贵州,迎美好未来_每日信息
港交所CEO欧冠升:“互换通”是全球首个衍生产品市场的联通机制-天天关注
天天速读:《暗黑破坏神4》将于6月2日抢先体验:PC、主机全平台同步
PS5偷盘哥事件更过去 《塞尔达传说》盗版玩家开始举报正版_环球速看
可可托海天气预报长期_可可托海天气-环球新要闻
天天观察:Rabbitmq 介绍 、安装、基于Queue实现生产者消费者模型、基本使用、消息安全之ack、durable持久化、利用闲置消费、发布订阅、发布订阅
中疾控:奥密克戎变异株再次感染,只有少数需医疗干预
理想成豪华市场最强中国品牌 仅次于BBA和特斯拉
每日报道:明天五一调休要上班!安卓用户喊话iPhone:苹果没节假日闹钟 果粉别睡过了
快报:谷歌Pixel Fold折叠屏手机定档5月10日:经典“相机条”设计
「学习笔记」AC 自动机
全球今亮点!P4093[HEOI2016/TJOI2016]序列
Python 脚本部署和发布 Django 应用程序的示例代码及注释
观速讯丨北京安监局特种作业证查询_安监局特种作业证查询
天天即时:【金融街发布】深交所发布两项公司债券信息披露业务指引
吃水果为什么可以解酒?苹果葡萄等五种水果最佳
滚动:自动驾驶数据遭破坏时 工信部:应能识别记录
iPhone 14 Pro Max用户换上Redmi Note 12 Turbo 1T版:花2000多很值
比亚迪的刀片 终于“捅向”特斯拉|天天最资讯
半年亏7千万 老板想跳楼!新能源造富运动结束了_环球新资讯
关于雷的成语_关于一的成语_天天滚动
声音检测报警模块方案解析
【天天时快讯】这座“中国建造”让洪都拉斯人有了更多期盼
曝光收车、卖车“套路” 博主被人人车发删稿函
天天速递!死磕影像!曝小米14系列将搭载独家WLG高透镜片
干翻Java/C++!Python成最受开发者欢迎编程语言:岗位报酬高居第一_环球快消息
热点在线丨山东71岁爷爷一年2次外出卖止咳蜂蜜糖:一待就是一两个月