论微服务架构及其应用(系统架构师论文题准备)

1.摘要

去年十月,我所在的公司组织了某部委工具中心项目的开发。该项目是以工具为单元对自动化运维工具集合进行管理的应用。工具中心为两级部署,一级工具中心作为其统一工具仓库,是各二级工具中心通用工具权威源,负责其通用工具的准入、全生命周期管理;二级工具中心为各省(市)工具仓库,存放来自一级工具中心的通用工具,负责各省(市)自建工具的准入、全生命周期管理,并作为工具最终运行平台,对外提供工具调用及监控服务。

在该项目中,我担任了架构师和项目负责人的职位,负责项目的架构评审、改造设计及实现。本文结合作者的实践,以工具中心为例,论述微服务架构及其应用。首先概述我参与管理和开发,并采用微服务架构开发的工作,然后具体描述微服务架构的特点,最后结合项目描述软件的架构,说明该系统是如何采用微服务架构模式的,并说明采用微服务架构模式后,在软件开发过程中遇到的实际问题和解决方案。经过项目组近一年的努力,本产品已顺利开发完成,目前已上线使用,取得客户和公司领导的一致好评。

2. 正文

近年来,随着互联网行业的迅猛发展,公司或组织业务的不断扩张,需求的快速变化以及用户量的不断增加,传统的单块(Monolithic)软件架构面临着越来越多的挑战,已逐渐无法适应互联网时代对软件的要求。在这一背景下,微服务架构模式(Microservice Architecture Pattern)逐渐流行。它强调将单一业务功能开发成微服务的形式,每个微服务运行在一个进程中;采用HTTP等通信协议和轻量级API实现微服务之间的协作与通信。这些微服务可以使用不同的开发语言以及不同数据存储技术,能够通过自动化部署工具独立发布,并保持最低限制的集中式管理。

微服务的基本思想在于考虑围绕着业务领域组件来创建应用, 这些就应用可独立地进行开发、 管理和加速。 在分散的组件中使用微服务云架构和平台使部署、 管理和服务功能交付变得更加简单。

微服务是利用组织的服务投资组合, 然后基于业务领域功能分解它们, 在看到服务投资组合之前, 它还是一个业务领域。

微服务这一概念出现于 2012 年, 是因软件作者 Martin Fowler 而流行, 他承认这并没有精确地定义出这一架构形式, 虽然围绕业务能力、 自 动化部署、 终端智能以及语言和数据的分散控制有一些常见的特性。

(1) 项目概述

随着某部委信息化进程的不断推进,对信息通信运行保障能力也提出了更高的要求。运维过程中通过借助于运维工具实现运维的自动化管理,由于当前在运的运维工具数量快速增长,各单位都有自己的运维工具,为了更好的利用好这些运维工具,建立统一的工具中心管理系统,管理和共享这些运维工具已经迫在眉睫。

为了解决上述问题,我们设计和开发了工具中心项目,该项目主要通过本地管理和共享管理等业务流程来实现全网自动化运维工具的管理:

1.本地管理负责省公司二级库这边工具的上传,发布审批,升级,部署,取消发布,删除等业务处理。

2.共享管理完成从省公司二级库把工具上传到总部一级库的过程,总部审批通过后共享给其他省分。

为了实现上述业务目标,完成业务功能,工具中心通过工具商店、在运工具和本地库管理三个微服务来实现。同时将项目团队划分为2个小组,根据功能的轻重缓急和工作量,安排各个微服务的研发。每个小组负责一个或多个组件完整的生命周期,最后各个服务组件通过RESTful HTTP协议进行服务组装。

(2)微服务架构的特点

传统的单块软件架构在构建部署和扩展伸缩方面有很大的局限性,传统的单块架构一般分为客户端用户界面、服务端应用程序和数据库三部分。系统中任何程序的改变都需要整个应用重新构建和部署新版本。另外传统的单块软件架构在进行水平扩展时也只能整个系统扩展,而不能针对某一个功能模块进行扩展。而微服务架构可以完美的解决统一风格架构所遇到的种种问题。微服务架构将系统以组件化的方式分解为多个服务,服务之间相对独立,单一功能的改变只需要重新构建部署相应的服务即可。与单块架构相比,微服务架构有如下的特点:

1) 通过服务实现应用的组件化(Componentization Via Services),在应用架构设计中,通过将整体应用切分成可独立部署及升级的微服务方式,进行组件化设计。

2) 围绕业务能力组织服务(Organized Around Business Capabilities),微服务架构采取以业务能力为出发点组织服务的策略,因此微服务团队的组织结构必须是跨功能的、强搭配的DevOps开发运维一体化团队,通常这些团队不会太大。

3) 基础设施自动化(Infrastructure Automation),云化及自动化部署等技术极大地降低了微服务构建、部署和运维的难度,通过应用持续集成和持续交付等方法有助于达到加速推出市场的目的。

4) 故障处理设计(Design For Failure),微服务架构所带来的一个后果是必须考虑每个服务的失败容错机制。因此微服务非常重视建立架构及业务相关指标的实时监控和日志机制。

5) 演进式的设计(Evolutionary Design),微服务应用更注重快速更新,因此系统的计会随时间不断变化及演进。

(3)微服务架构应用

在本系统中,采用通讯层、业务逻辑层、基础平台层组成系统的微服务架构。

在微服务架构下,我们选择RESTful的进行通讯。每个微服务都统一对外提供REST服务。无论前端调用后端服务还是后端之间的服务调用都统一走RESTful,这样就统一了协议栈。微服务架构可以支持各种异构系统服务间的交互。

服务的注册与发现,服务之间需要创建一种服务发现机制,用于帮助服务之间互相感知彼此的存在。服务启动时会将自身的服务信息注册到注册中心,并订阅自己需要消费的服务。

负载均衡是服务高可用的保证手段,为了保证高可用,每一个微服务都需要部署多个服务实例来提供服务。我们主要支持随机、轮询、最少链接数的策略将来自网络的请求随机分配给内部中的多个服务器。

服务容错采用快速失败,失效切换的策略。如果连续失败多次则直接熔断,不再发起调用。这样可以避免一个服务异常拖垮所有依赖于他的服务。

(4)遇到的问题及解决方案

在微服务实践中,我们主要遇到三个问题,一运维开销及成本增加,因为每个微服务需独立运行,还可能采用多种语言环境,这将导致资源开销大;二代部分码重复,某些底层功能需要被多个服务所用;第三个问题是难以可视化及全面测试,在动态环境下服务间的交互会产生非常微妙的行为。因此,首先服务划分应尽量合理,不要划分太细太多,其次采用公共模块的方式提供底层服务,再次微服务可通过监控发现生产环境的异常,进而快速回滚,弥补可测性不足的问题。

通过项目实践证明,实施微服务架构收益会大于成本。在拥抱微服务之前,也需要认清它所带来的挑战。需要避免为了“微服务”而“微服务”。对传统企业而言,开始时可以考虑引入部分合适的微服务架构原则,对已有系统进行改造或新建微服务应用,逐步探索及积累微服务架构经验,而非全盘实施微服务架构。

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

推荐阅读更多精彩内容

  • 【摘要】 我所在的公司是国内主要的房地产企业之一,由于近几年房地产业务以及信息技术的飞速发展 ,公司信息化项目的管...
    枫_7654阅读 1,727评论 0 3
  • 微服务最近非常流行,各大互联网公司纷纷采用微服务架构体系,微服务架构模式正在为敏捷部署以及复杂企业应用实施提供巨大...
    Sting阅读 9,072评论 0 57
  • 一直努力寻找爱情,也一直在坚持着内心的那一份纯真和执着,遇见你之后,之前所有的苦痛和等待都是值得的。 原来,爱情真...
    梨雪阅读 194评论 0 0
  • 文/东与东妈 对于冬天的广州,天气像个爱撒娇的女人,变化无常。昨儿还是短袖,今天就阴风阵阵突然降温了,还伴着丝丝 ...
    东与东妈阅读 223评论 0 1
  • 记:出生在1997年,比多数人的出生更意外。是罪恶,但在愚昧的眼中是慈悲。 一直觉得自己是生在地下的怪物,一出生脑...
    陈周阅读 249评论 0 0