Container周报第123期:1,600个微服务怎么管英国当红网银Monzo秘诀大公开
如何在K8s管理1600个微服务?英国当红数位银行秘诀大公开
日前,英国数位银行Monzo两位资深工程师Matt Heath和Suhail Patel在伦敦一场研讨会上,揭露了如何管理1,600个后端微服务的经验。这间设立超过5年的英国挑战者银行,一般金融用户超过了4百万人,去年9月更进军美国市场,目前也正在开发企业用的数位银行服务。Monzo所有金融服务都是透过手机App提供,也因此,他们一开始就决定建立分散式架构,而不是建置一套庞大的银行核心系统。最初先採用Mesos来建立容器丛集,在2016年时则全面换成了现在当红K8s,来打造了一个执行各种金融微服务的平台。Monzo是少数很早就开始压宝K8s的企业业者,也将基础架构搬上AWS平台,来减少维运人力。
Monzo使用了容易水平扩充的NoSQL资料库Cassandra,后端系统主要开发语言则是简洁的Go,他们的理由是,这个语言保证向下相容,所以,遇到语言改版时,例如有次新版增加了垃圾蒐集功能,原有程式码不用修改,直接用新版Go重新编译后即可执行,就能使用新功能来提高记忆体管理效率。
这是一家喜欢自己开发工具的公司,若有需要串接第三方系统或支付平台时,Monzo都尽可能自製开发整合机制,来提高效能,避免採用第三方整合工具,而带进了许多额外不需要的程式码,例如他们就开发了一个互动工具,来串联AWS环境和K8s环境,让开发者透过一个pull reques指令,就可以快速进行部署或恢复旧版部署。
在微服务设计上,Monzo将每一个微服务,都跑在一个Docker容器中。容器化微服务的程式码,还分为两层,一层是所有微服务都必须内建的共用核心函式库层(Shared Core Library Layer),包括了RPC、Cassandra、锁定机制、Log记录机制、监控Metrics、Queuing等六大类函式库,另一层则是业务层,也就是这支微服务要放进入的程式码。
Monzo拆分微服务颗粒度的原则是,进可能地拆解到越细小的程度,他们解释,拆解得越细,可以将变动风险降到最低,例如更新单一功能,能减少对其他微服务的影响。但是,微服务颗粒度越小,代价是会产生大量的微服务。Monzo统计,第一年不过数百个微服务,但到了2019年11月初达到了1,500个微服务,甚至去年12月更暴增到1,600个已上。这些微服务间互相的不重複呼叫超过了9,300个。
因为所有服务都在线上,Monzo希望尽可能落实零信任安全制度,因此,採取白名单方式来管控每一个微服务可呼叫的其他微服务名单。起初,微服务数量不多时,这份白名单採人工维护,但是,数量达到数千,甚至近万个时,维护工作非常複杂,因此,Monzo决定改开发自动化维护工具。
习惯自己开发工具的Monzo先挑了安全管控最严格的一支微服务service.ledger来测试,利用K8s的网路政策资源,在配置档中建立一个呼叫白名单。这是一支负责跨帐户移动金钱的微服务。
接着,Monzo开发了一个微服务通讯剖析rpcmap,可以自动分析每一支Go语言程式,找出对service.ledger微服务的所有呼叫来源,来建立白名单。
有了名单之后,Monzo下一步是利用K8s的NetworkPolicy资源来执行过滤,在service.ledger所属的ledger服务配置档中建立网路政策,只有加上可允许标籤的网路流量来源才可以放行,并在ledger程式码目录中,放入一份授权来源的白名单档案。一旦有其他开发团队想要取得呼叫权限时,就得更新这个白名单档案,并且重新部建ledger服务(因为程式码内的档案有异动)后才能生效,ledger开发团队在部建阶段就可以审查这个新增的外部呼叫。
不过,测试后发现了几个问题,多了不少人工审查呼叫的负担,也会提高微服务回复旧版本的风险,再加上开发团队习惯手动编辑配置档,每一个人都能修改呼叫白名单,而难以管控。后来,Monzo决定导入开源的K8s网路安控专案Calico,在每一个微服务上建立一个微型防火墙功能,来管理存取。另外,Monzo也大力提高微服务管理的资讯透明度,如自製微服务剖析工具,方便开发团队查询每次程式码checkout后,微服务所用API的清单和状态资讯,并且大量採用视觉化监测工具来追蹤流量和用量。
除了工具面的管理机制,Monzo也製作了一份后端工程师101指南,要求开发团队第一次撰写后端程式就要开始遵循,内容从新服务建立,RPC处理程序导入、资料库查询、如和透过Firehose发布和使用讯息、如何撰写单元测试,到如何部署,都有详细的说明和规定,并提供了一个Slack频道来讨论这套后端应用规範的上手问题。Monzo要求,每一个开发成员都要遵守这个规範来开发后端的微服务。
Monzo解释,微服务的颗粒度越细,儘管有助提高弹性,但是,需要搭配一致的程式码架构和工具,透过标準化让工程师聚焦在业务问题,持续改善工具和功能,才能快速进行一系列的微幅迭代修改,来打破大型金融应用的複杂性,又能降低风险。
#Docker,#云端部署
战略转向AP部署和派送流程,Docker公开未来产品蓝图
Docker在自家部落格说明了未来营运新战略蓝图,将会花更多的资源强化开发体验,使开发人员可以更方便地让程式码,部署到多云应用程式Runtime中。Docker将进一步发展基础Docker工具、Docker Desktop以及Docker Hub来加速这个过程,除了改善Docker Desktop的开发体验,并与生态系合作,且使Docker Hub能够整合、配置和管理,建构应用程式和微服务所需要的应用程式元件。Docker Hub将不只是一个注册表服务,而将会成为工具生态系中心,Docker Hub会提供各种工作管线选项,範畴从抽象功能到让开发者自己从头打造的元件都有。
#GCP,#Istio,#Envoy微服务平台Istio大力拥抱WebAssembly,1.5新版推出全新套件扩充模式
开源微服务平台Istio是Google混合云平台Anthos的核心套件之一,最近释出了1.5新版,最大特色是推出了新的扩充套件模式,可以让开发者使用WebAssembly档案,快速透过Istio内的Envoy proxy来发布或执行程式码,整合到远端环境中,也可整合政策管理系统、路由控管机制,甚至修改派送的讯息内容。官方指出,这个新模式可以让开发者更弹性地将一个複合式的元件,先各自分开执行初始元件再组合。另外,命令列工具istioctl增加了十多项改善,因此进入Beta测试版,而安装管理机制则仍旧在alpha测试版中,预计将发展成一个功能更完整的维运工具API。另外,在安全强化上,资安政策工具Auto mTlS也进入测试版本,可以支援否定语法,来强制某些控制机制的政策不会被覆盖而出错。在透明度上,Telemetry第二则新增加原始TCP连线的监控支援。
#VMware,#K8sK8s重新改造的新版vSphere 7正式发布,5月正式上市
VMware在3年前开始投入K8s技术开发,甚至找来,两位K8s创办人加入VMware,全新的K8s产品线Tanzu和改用K8s重新设计的新版vSphere 7终于亮相,VMware在vSphere底层放入了一套K8s,提供了一个底层K8s超级节点,可以同时执行VM和K8s容器化应用,也能直接在虚拟层上提供K8s丛集。VMware执行长Pat Gelsinger直言,这是vMotion问世以来,最重要的虚拟化技术变革。Tanzu产品线则要用来管理和串接,各种不同环境的K8s,公有云、私有云、第三方版本等,来提供一个统一的K8s部署和管理介面。开源的Tanzu元件先释出正式版,而vSphere 7新版则预定在今年5月1日正式上市。
#Ansibl,#DevOps担心疫情失业潮,知名K8s DevOps工具书一个月免费要让工程师自学
担心武汉肺炎疫情重创科技业,恐出线工程师失业潮,知名软体工具书Ansible DevOps作者Jeff Geerling最近决定,将自己两本热门工具书,免费提供下载1个月,让工程师可以自修来强化自己的能力。他在LeanPub电子书初版平台上,提供《Ansible for DevOps》和《Ansible for Kubernetes》这两本书,订购者可自订要购买的价格,到最低的0元。
#机器学习,#Kubeflow开发、训练到部署一套搞定,K8s机器学习工具包Kubeflow终于有正式版
超过2年开发,开源的K8s机器学习版终于释出了第一个正式版本。Kubeflow原本称为TensorFlow Extended,是Google内部用来部署TensorFlow模型到Kubernetes的方法。在2017年底在美国Kubecon中对外开源,之后专案便蓬勃发展,现在有来自30个组织上百位的贡献者,参与Kubeflow专案的开发。Kubeflow 1.0提供了一组稳定版本的应用程式,提高开发者在Kubernetes上进行开发、建置、训练和部署模型的效率。包括Kubeflow的使用者介面Central Dashboard以及Jupyter笔记本控制器,还有用于分散式训练的Tensorflow和PyTorch运算子,同时也提供管理多重使用者的配置文件管理器,和部署升级工具kfctl。
#容器OS,#BottlerocketAWS自製容器专用OS,配置异动和搬迁都能靠API
AWS推出专门为容器主机最佳化的Linux作业系统Bottlerocket,包含容器主机所需要的元件,并且整合了现有容器调度工具,支援Docker映像档以及OCI(Open Container Initiative)格式的映像档。特别之处在于其更新以及API设计上,用户可以利用呼叫API来调整配置,而不需要手动更改,并且这些更改还可以在更新时自动搬迁。Bottlerocket不使用套件更新系统,而是使用基于映像档的更新模型,这个模型在必要时可以快速且完整的回退,Bottlerocket中几乎所有的地方元件,都是以Rust开发而成,而Rust能够消除某些类型的记忆体安全性问题,并且使开发者以较安全的模式开发程式。
责任编辑/王宏仁
更多Container相关动态
GitHub买下Node.js套件管理器Npm微软释出VS Code Docker扩充套件1.0免责声明:本文由用户上传,如有侵权请联系删除!
猜你喜欢
- 郦志隆降压表怎么样(郦志隆降压表)
- 可以逗大家开心的节目(逗笑与逗乐是个怎样的节目)
- 世界杯比分最悬殊的比赛(世界杯上最大的逆转是哪一场比赛)
- 电视剧里有李佳萱(李佳萱是什么电视剧中的人物简介介绍)
- 中国人可以在泰国租车吗(去泰国可以在当地租车自驾吗)
- 广州珠江新城花城大道附近酒店(广州天河中学珠江新城校区附近有什么酒店)
- 辽宁足球俱乐部重建(辽宁足球俱乐部官网)
- 关于焦油的(松焦油的作用简介介绍)
- 东北财经大学和东北师范大学哪个好(二本东北财经营口校区和辽宁师范大学哪个好)
- new(balance1400中底是什么材质)
- 笔记本要怎么连接打印机(笔记本怎么连接打印机设备简介介绍)
- 他喜欢的明星是(有哪些明星艺人是你自始至终一直非常喜欢的)
最新文章
- 中国好声音如果没有你李昊瀚(山野中国好声音李昊瀚唱的那么好为什么淘汰)
- 被套的尺寸是多少(被套尺寸一般是多少简介介绍)
- 怪物x联盟复刻版攻略(怪物x联盟复刻祥云马)
- 阳历是快的还是慢得(快的和慢的哪个是阳历简介介绍)
- 英雄联盟赵信特战先锋(特战先锋德邦总管赵信)
- 凤凰传奇有一首歌叫什么(凤凰传奇有一首歌歌词有)
- 为什么腾讯视频看不了直播(腾讯lpl视频看不了怎么办)
- Blue(Da(Ba Dee) 歌词)
- 联想z475开机黑屏(联想Z475开机超慢怎么回事)
- 吴建豪舞林大会跳的舞(2011舞林大会吴建豪怎么没有看见进复赛)
- 海清结婚了吗现在怎么样了(海清结婚了吗)
- 开十字绣店到哪里进货(开十字绣店在哪里进货怎么进货呢)
- 卫庄大战六剑奴是哪一集(卫庄哪集说的六剑奴是值得一战的对手)
- 微信六年来第一次开始“变脸”为什么
- iphone怎么看已连接wifi密码(iPhone怎么越狱啊)
- 求K233次列车(15车厢的座位号)
- 能链综合能源港里的充电站为何成为香饽饽
- 鸡蛋怎么做比较有营养(鸡蛋怎么做比较好吃)
- lol手游霞怎么出装(LOL新英雄霞与洛逆羽霞如何出装霞怎么出装)
- 穿越火线什么时候上架(穿越火线什么时候能玩)
- 北比臼舅怎么读(北比臼日怎么读)
- 创世之柱任务有什么用(创世之柱任务怎么做)
- 徐磊的歌曲(写给你的歌 徐磊乐演唱作品)
- 广州市经济适用住房准购证明怎么办理(如何取得广州市经济适用住房准购证明)