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

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 等工具检查代码质量、每次上线前都会进行多轮的冒烟测试、对于线上还会有定时的自动化测试脚本,一旦某个环节出了问题,就会自动预警以及时修复等等

2. 问题追踪

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

Authing 采用了 prometheus 、 grafana 等工具实时检测服务的各项指标,前端也做了相关埋点工作,并在各个层次和维度上记录了详细的日志统一管理,从开发、提测到上线,每一个节点都有记录了明细的相关文档可以追踪,这样可以保证及时预警避免事故发生,即便出了事故也可以快速定位修复问题。

3. 故障解决

即便做了这样或那样的努力,有时候还是无法避免故障的发生,这时候就要尽快解决问题。在平时做了充分监控和记录的前提下,查阅日志和监控记录,复线问题,定位代码以找到错误并修复问题的速度就至关重要了。

Authing 采用了微服务架构,当问题出现时我们可以快速定位哪个模块出了问题,根据已有的日志和监控,快速定位、复现问题并解决问题,事后通过复盘避免类似事故的再次发生。

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,384评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,845评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,148评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,640评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,731评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,712评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,703评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,473评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,915评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,227评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,384评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,063评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,706评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,302评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,531评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,321评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,248评论 2 352

推荐阅读更多精彩内容