一文带你读懂云原生、微服务与高可用

01

云原生

云原生是一个不断改变的概念,它的界说也在不断改变,其解释权不被个人或某些安排一切。但大体上,云原生(CloudNative) ,云指的是运用位于云中,而不是传统的数据中心;原生是指运用在设计之初就是以在云上运行为方针的,最大限度的运用云的分布式、高弹性等优势。

Pivotal 公司于 2013 年首次提出云原生(CloudNative)概念,现在 Pivotal 已成为了 Vmware tanzu 的一部分,他们最新的官网关于怎么构建云原生运用描述了以下 4 点:

DevOps:DevOps 是软件开发人员和 IT 运营之间的协作,旨在供给处理客户问题的高质量软件,使构建、测验和发布软件能够快速、频频且更一致地进行。

微服务:微服务是一种将运用程序开发为小服务集合的架构方法;每个服务都完成事务功用,在自己的进程中运行,并经过 HTTP API 或消息传递进行通讯。每个微服务都能够独立于同一运用程序中的其他服务进行布置、升级、扩展和从头启动,一般作为自动化系统的一部分,能够在不影响客户的情况下频频更新实时运用程序。

容器化:与规范虚拟机 (VM) 比较,容器有更高的功率和速度。运用操作系统级虚拟化,单个操作系统实例在一个或多个阻隔容器之间动态区分,每个容器具有唯一的可写文件系统和资源配额。创建和销毁容器的低开支以及单个 VM 中的高打包密度使容器成为布置单个微服务的抱负计算工具。

安全性:云原生安全根据以下三个准则供给了一种下降企业危险的变革性方法:更新可用时立即修正易受攻击的软件;常常从已知良好的状况从头修正服务器和运用程序;常常轮换用户凭证。

总而言之,云原生架构的运用程序应该是:选用容器化计划,根据微服务架构进步灵敏性和可保护性,借助敏捷方法、DevOps 支撑持续迭代和运维自动化,运用云渠道设备完成弹性弹性、动态调度、优化资源运用率的运用程序。

  • 云原生构建运用简洁方便,布置轻松自如、按需弹性、架构灵敏;
  • 比较 OpenStack 等虚拟化计划,削减了虚拟化的开支、布置成本低、功用更好;
  • 比较纯 Docker 集群,有更好的编排能力,保护性更好,可用性更高,能够削减毛病率;
  • 而天然生成对微服务的支撑也使得高内聚、低耦合能够轻松完成,使得运维、扩容、敏捷开发变得更加简单;

云原生的长处不胜枚举,缺点却难以与其相提并论。

02

微服务

软件设计有两个关键方针:高内聚、低耦合,环绕这 2 个中心方针,又提出了单一职责、开闭准则、里氏替换、依赖导致、接口阻隔、最少知识等设计准则,这也即是微服务的准则。

一个项目,开端建立时总会有预料不到的后续问题,跟着用户和事务的增加,功用就会出现瓶颈,或者项目的架构难以满意事务需求,这时分除了常规的代码优化外,就需求拆分服务了。

举个比方,一个项目刚刚创建,谁也不知道它未来要服务多少客户,5 个人的团队就能完成悉数的开发任务,每个开发人员都对项目的代码心中有数,但跟着事务的增加,杂乱度的提高,团队从 5 个人变成了 50 个人,代码也从几千行到了几十万行,这时分单一的开发人员就很难对一切的代码都做到“心中有数”了,而当代码数量再度增加,事务也更上一个层级的时分,单纯的某一个子事务的代码就已经杂乱到需求一个团队来开发保护了,此刻老的架构已经不能支撑事务的需求,对代码的保护也成了一个难题。

更好的做法是,在某个合适的时刻点把代码依照中心功用拆分成一个个微服务,每个服务只关注自己的完成,每个服务都能够单独开发和布置,每个服务都能够交给一个团队,服务之间经过预先界说好的接口进行通讯。这样,每个团队只需关怀自己担任部分的代码和功用,而单个服务出现毛病也不会影响其他服务,而且选用这种架构咱们能够快速进行迭代开发,进步交给功率。

Authing 就选用了微服务架构,这样能够带来最大的灵敏性、可靠性和开发功率

03

高可用

高可用是一种面向危险设计,使系统具备操控危险,供给更高的可用性的能力。 从概率学上讲,凡是或许犯错的,跟着次数的增加,犯错将是不可防止的,这时咱们就需求预先对各种危险作出评价,经过种种手法抑制防止这些危险,确保服务的可用性。

云原生和微服务尽管很好,具有灵敏可拓展等一系列的长处,但想要做到高可用,还需求做许多尽力,咱们从操控危险、问题追寻、毛病处理三个方面来讲:

  1. 操控危险

操控危险有四大要素:

  • 削减危险数量:从源头上削减危险,比方外面下雨你不出门,那你就没有被雨淋的危险;
  • 下降危险变成毛病的概率:比方在任何或许堵塞事务的代码中加入过错冗余处理使其不堵塞其他事务;
  • 削减毛病的影响范围:把整体事务拆成一个个微服务,某个服务挂掉了,不会影响其他服务的正常运行;
  • 缩短毛病影响时长:事前做好预警工作、平常做好监控工作、有充沛的预案和灾备、过后做好复盘,能自动化的操作尽量自动化,需求人工的操作尽量一键化,比方一键切换、一键回滚、一键扩容等等。

Authing 为了防止危险作出了诸多尽力:在测验前会运用 Sonar 等工具检查代码质量、每次上线前都会进行多轮的冒烟测验、关于线上还会有守时的自动化测验脚本,一旦某个环节出了问题,就会自动预警以及时修正等等

  1. 问题追寻

平常要做好监控,发现问题才好追寻。关于云原生运用来讲,需求确保各个层面都有监控,日志会集办理,出现问题才好随时复盘,还应运用好各种工具来检测服务和集群的各项指标,出现问题前及时预警。

Authing 选用了 prometheus 、 grafana 等工具实时检测服务的各项指标,前端也做了相关埋点工作,并在各个层次和维度上记载了详细的日志统一办理,从开发、提测到上线,每一个节点都有记载了明细的相关文档能够追寻,这样能够确保及时预警防止事端产生,即使出了事端也能够快速定位修正问题。

  1. 毛病处理

即使做了这样或那样的尽力,有时分仍是无法防止毛病的产生,这时分就要赶快处理问题。在平常做了充沛监控和记载的前提下,查阅日志和监控记载,复线问题,定位代码以找到过错并修正问题的速度就至关重要了。

Authing 选用了微服务架构,当问题出现时咱们能够快速定位哪个模块出了问题,根据已有的日志和监控,快速定位、复现问题并处理问题,过后经过复盘防止相似事端的再次产生。

Authing 作为 SaaS 产品一直致力于进步自己的可用性,给客户更好的体验,咱们会不断优化自己的架构,不断实践,不断进步。


Authing 已服务全球七个国家的数万开发者和企业,包括招商银行、意大利裕信银行、中国石油、国家电网、日本丰田、大众汽车、博世集团、德高集团、高等教育出版社等不同职业客户。遵从不同国家和职业的安全与合规要求,完成可视化安全审计,加密传输与存储、自界说暗码强度、自适应多要素认证等丰厚的安全策略。

关于 Authing

Authing 身份云国内首款以开发者为中心的全场景身份云产品,集成了一切干流身份认证协议,为企业和开发者供给完善安全的用户认证和访问办理服务,已协助 20,000+ 家企业和开发者构建规范化的用户身份系统。

Authing 既是客户的支撑者,也是客户的产品专家和战略顾问,更是值得信任的合作伙伴。咱们供给全球化的身份专家支撑团队,经过网络或电话,7*24 小时不间断支撑。Authing 的协助中心供给最新的技能知识库、商业事例以及与您的同行和 Authing 专家联络的机会。不管您何时需求咱们,Authing 的支撑团队总能最快响应。

2022 年,Authing 将秉承着致力于客户成功的初衷,协助推动客户重要事务,为完成身份连通、打破数据孤岛而不懈尽力。