基于云平台的微服务架构设计的四个原则

概述

微服务架构是一种新的软件体系设计形式,提倡将应用系统按照一定的原则将大系统拆分成一系列细小的服务,每个服务只需要专注于一个单一的业务功能即可,并且服务之间可以互相独立运行,采用轻量级API进行通信,单一功能的改变只需要重新构建部署相应的服务即可。
本文将介绍微服务架构的必要性、优缺点和微服务应用的设计原则。

微服务架构的必要性

云并非把原先在物理服务器上跑的东西放到虚拟机里跑,真正的云化不仅是基础设施和平台的事情,应用也要做出改变,改变传统的做法,实现云化的应用——应用的架构、应用的开发方式、应用部署和维护技术都要做出改变,真正发挥云的弹性、动态调度、自动伸缩这些传统IT所不具备的能力。这里说的“云化的应用”也就是“云原生应用”。为了更好的适应云上的开发和交付,需要涉及一些技术,如容器技术和微服务架构等。

微服务架构的优点

微服务架构的有以下一些优点:

  • 每个微服务组件都是简单灵活的,能够独立部署。不再像以前一样,应用需要一个庞大的应用服务器来支撑;
  • 可以由一个小团队负责更专注专业,相应的也就更高效可靠;
  • 微服务之间是松耦合的,微服务内部是高内聚的,每个微服务很容易按需扩展;
  • 微服务架构与语言工具无关,自由选择合适的语言和工具,高效的完成业务目标即可。

微服务应用4个设计原则

设计原则

1.AKF拆分原则

AKF

AKF扩展立方体(参考《The Art of Scalability》),是一个叫AKF的公司的技术专家抽象总结的应用扩展的三个维度。理论上按照这三个扩展模式,可以将一个单体系统,进行无限扩展。

  • 水平复制(X 轴):基于访问量或者IO进行拆分,这样可以让服务自动伸缩多运行几个实例,做个集群加负载均衡的模式;
  • 数据分区(Z 轴):基于数据分区进行拆分。比如一个互联网打车应用突然访问量激增,集群模式撑不住了,那就按照用户请求的地区进行数据分区,北京、上海、天津、重庆等多建几个集群;
  • Y 轴 :基于不同的业务拆分。
    场景说明:比如某滴打车,一个集群撑不住时,分了多个集群,但是用户激增还是不够用,经过分析后发现是乘客和车主访问量很大,就将打车应用拆成了多个乘客服务、车主服务、支付服务。这些服务的业务特点各不相同,独立维护,各自都可以再次按需扩展。

2.前后端分离

这里的前后端分离不是指的开发过程中仅仅在代码层面去分离前后端开发,而是要求在架构方面分离,后端指处理业务逻辑,前端用vue/angular2+/react等web app单独实现,通过调用统一RESTful接口获取数据。这种分离模式的方式有几个好处:

  • 可以由前后端的专家来对各自的领域进行优化,这样前端的用户体验优化效果会更好;
  • 前后端交互界面更加清晰,就剩下了接口和模型,后端的接口简洁明了,更容易维护;
  • 多前端集成场景更容易实现,后端服务无需变更,采用统一的数据和模型,可以支撑多个前端的web UI、移动App、微信等访问。

3.无状态服务

无状态服务原则并不是说在微服务架构里就不允许存在状态,表达的真实意思是要把有状态的业务服务改变为无状态的计算类服务,那么状态数据也就相应的迁移到对应的“有状态数据服务”中。这样便于在云平台实现自动伸缩功能。


无状态服务

场景说明:例如我们以前在本地内存中建立的数据缓存、Session缓存,到现在的微服务架构中就应该把这些数据迁移到分布式缓存中存储,让业务服务变成一个无状态的计算节点。迁移后,微服务应用在运行时通过设置的阈值自动伸缩,就不再需要考虑缓存数据如何同步的问题。

4.Restful通信风格

后端必须提供符合RESTful API标准的接口,RESTful API接口有以下一些优点:

  • 无状态协议HTTP,具备先天优势,扩展能力很强。例如需要安全加密时,可以采用现成的成熟方案HTTPS;
  • JSON 报文序列化,轻量简单,人与机器均可读,学习成本低;
  • 语言无关,各大热门语言都提供成熟的Restful API框架,相对其他的一些RPC框架生态更完善。

微服务架构带来的问题

微服务架构有很多优点,但是不可避免也会带来一些问题:

  • 依赖服务变更很难跟踪,依赖的服务没有准备好,如何验证我开发的功能;
  • 部分模块重复开发,跨团队、跨系统、跨语言等都会或多或少的重复建设;
  • 微服务放大了分布式架构的系列问题,如分布式事务、依赖服务等;
  • 运维复杂度陡增,如:部署服务数量多、监控进程多导致整体运维复杂度提升。
    上面这些问题都会遇到过,并且也会有一些解决方案:
  • 提供文档管理、服务治理、服务模拟的工具和框架;
  • 实现统一认证、统一配置、统一日志框架、分布式汇总分析;
  • 采用全局事务方案、采用异步模拟同步;
  • 搭建持续集成平台、统一监控平台等等。

总结

综上所述,微服务架构有很多优点也有不少不足之处,分析到最后终于明白了我们需要的解决方案,需要一个微服务应用治理平台才能整体性的解决这些问题。

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