架构演进之「微服务架构」

author author     2023-01-13     377

关键词:

技术分享图片

“为什么要搞「微服务架构」”?这也是我们当初讨论的聚焦点。现在天天把“微服务”挂在嘴边的人很多,但是有多少人真正深入思考过“为什么”,我认为可能不多。

于是我在梳理材料的时候,就决定从源头入手——即“为什么”。
技术分享图片

架构是演进的,不是一蹴而就。

技术分享图片

“架构演进趋势图”中的趋势分析,在业界比较公认。这个图本身的内容、关于各个架构的描述、优缺点等等,网上简单搜索一下有大把大把的,感兴趣的同学可以自行搜索,毕竟这也不是我们文章的重点。

软件发展的不同时期、阶段,对技术的理解、选择和应用都有着不一样的诉求。架构的选型,永远只有“合适与不合适”,永远没有“哪个更好”的说法。我们今天来谈论微服务,并不是因为它更牛,而是经过谨慎分析,认为微服务的思想更符合我们的目标。

什么是「微服务架构」?

技术分享图片
既然聊的是“为什么”,那么首先要明白“什么是”。

「一解释就懂,一问就不知,一讨论就打架」,这是之前我在网上看到的一句话,笑了好久,太贴切了,就搬了过来。

技术分享图片

提到微服务,就没法不提到这位“大神”——马丁·福勒,他没有直接给微服务下一个精准的定义,而是给出了微服务特点的描述,大概从以下四个方面来说:

1.根据业务模块划分服务种类
2.每个服务可以独立部署并且互相隔离
3.通过轻量的API调用服务
4.服务需要保证良好的高可用性

技术分享图片
怎么理解呢?以下是我的解读:

第一点,按业务拆分服务,这是“水平拆分”;在技术层面的“前后分离”,属于“垂直拆分”;横纵一起切,就把单一的应用拆分成网状的小块应用,这是微服务中「微」思想的体现。

第二点,独立部署与互相隔离,这点充分体现了“我为人人、人人为我”的设计理念,这是微服务中「服务」思想的体现。

第三点,关于轻量API,微服务本身是推荐使用轻量的通讯协议和简单的数据结构,实际上,实施环节通常采用的都是http+json的方式。这样做的好处是,服务之间不再需要关心对方的模型,仅通过事先约定好的接口来进行数据流转即可。这是微服务中「解耦」思想的体现。

最后一点,比较通用了,就是现如今各种设计都必须考虑的事情。

于是,我给微服务下了一个定义(如图)。
技术分享图片

在实际工作中,我们遇到过各式各样的问题,有些是技术问题,有些是业务问题,还有些是管理问题,这里拿其中一个案例来说一下。

技术分享图片
这种事情说大不大,说小不小。其中最麻烦的事情是“推诿”的发生。每个独立组织都有自己的考核指标和关注点,而实际情况又不可能把具体的一个任务的界限划分得特别清晰。例如接口定义,哪怕说的是“双方坐下来一起商讨决定”,最终还是会有一方对此事负责,推诿在所难免。

微服务的指导思想其中一块就是关于组织机构调整的,这还有个专门的定律叫“康威定律”,感兴趣的可以自行搜索了解。

我们的解决办法也很有效果。在组织机构没有完全按照微服务的理念重新规划之前,这类需要跨组织协同完成的任务,直接成立临时项目组:相关的部门出人的出人、出资源的出资源,指定/选拔一个能hold住的项目经理对整件事情负责,然后大家惊奇的发现:“部门墙”问题不见了,因为所有事情都是组内事情了,整体的完成情况跟全部项目组成员的业绩都挂钩了,事情推进就非常顺利。在顺利交付之后,项目组解散,各回各家。极大的提升了沟通效率、交付速度,同时使得资源利用率也得到了很大的提升。

其实很多时候,大家解决问题的想法和思路,并不是要有了微服务才这样做,而是“不谋而合”,微服务就存在于我们日常工作的点点滴滴之中。

技术分享图片

有人问:我要搞微服务了,有啥建议么?

有的。通过我们不断的摸索和总结,要做好微服务,就要做好一定的准备工作,从四个具体的方面来谈:

业务拆分 – 体现在设计环节:在设计的时候,要有足够的判断力来合理的规划服务之间的界限。

服务治理 – 底层技术的支持:首先要选一款适合自己实际情况的分布式服务基础框架,对于服务的发现、治理、熔断、降级,都要做好相应的技术准备。

自动测试:一定要自动化。微服务一个明显的表象就是随着服务的增多,如果继续沿用传统的测试模式就会遇到瓶颈,为了保证高效的迭代,尽量做到更多的环节实现自动化。

自动运维 :微服务拆分之后,每个服务都可以独立部署,进而言之应该是随时随地可以升级。尤其当互联网发展到今天,业务要保持对市场变化的一个高效响应,自动化运维就是提升交付速度的一个重要环节。

最后一定要提的是「监控」:包括硬件环境、服务状态、系统健康度、接口调用情况、异常的实时告警以及潜在问题的事先预警等等。「监控」在实施微服务过程中会重要到什么程度呢?一句话:没准备好监控,就不要搞微服务。
技术分享图片

最后,微服务不是银弹,软件领域没有银弹,微服务以其特有的优势在解决一些问题的同时,也引入了其他问题,这几点,必须要深刻的思考。

「三思而后行」。

技术分享图片

———————————————分割线————————————————
我是小微,专注微服务技术分享,致力挖掘更多“高、精、全”的微服务知识分享给大家。
我的微信:weiweiweiblack (备注:51CTO )
微信公号:黑少微服务,“分享技术,热爱生活”,欢迎关注

微服务架构演进

阿里系:Duboo做服务化治理,Zookeeper服务注册中心,SpringMVCorSpringBoot基础框架SpringCloud栈:SpringCloud,NetflixEureka,SpringBoot来自为知笔记(Wiz) 查看详情

微服务架构学习与思考(12):从单体架构到微服务架构的演进历程

从单体架构到微服务架构的演进历程一、单体架构1.1什么时候用单体架构在创业初期或项目开始时,项目整体功能比较少,开发人员也少,且项目需要用最少时间开发出来,用MVP方式快速进行市场验证是否可行,这时候就可以用... 查看详情

架构演进丨metersphere开源持续测试平台v2.3升级至微服务架构

...here开源项目完成了一次重要的蜕变,正式从单体应用架构升级至微服务架构。从创立之初,MeterSphere项目就将自身定位为“一站式的持续测试平台”。自MeterSpherev1.0.0发布以来,产品功能模块持 查看详情

图解微服务架构演进(代码片段)

图解服务化架构演进前言来自dubbo的用户手册中的一句话:随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保... 查看详情

javaweb架构演进与技术思考

...ff0c;欢迎你的加入:陈书予的社区文章目录一、引言二、Web架构演进概览1.1传统架构1.2分布式架构1.3云计算架构1.4三个架构的对比三、JavaWeb开发现状2.1JavaWeb开发面临的问题2.2解决JavaWeb开发问题的技术四、JavaWeb架构演进历程3.1JSP&#... 查看详情

java之springcloud概念介绍

...四、参考文章 一、理解微服务  我们通过软件架构演进过程来理解什么是微服务,软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程。1.单体架构 1.1特点(1)所有的功能集成在一个项目工... 查看详情

云原生架构下的微服务选型和演进

...com/live/detail/28454随着云原生的演进,微服务作为主流应用架构被广泛使用,其落地的难题逐步从如何建好延伸到如何用好。今天跟各位小伙伴分享一 查看详情

springcloud架构演进和基础知识简介

一、传统架构演进到分布式架构简介:讲解单机应用和分布式应用架构演进基础知识(画图)高可用LVS+keepalive1、单体应用:开发速度慢、启动时间长、依赖庞大、等等2、微服务:易开发、理解和维护、独立的部署和启动等等不足... 查看详情

云原生微服务治理技术朝无代理架构的演进之路

...文基于对微服务治理技术从SOA,微服务框架,到云原生架构的历史发展总结,提出了一种新的基于Javaagent技术的新一代无代理架构的服务治理技术,并介绍了其相关的代表性开源项目Sermant。本文分享自华为云社区《云... 查看详情

图解微服务架构演进(代码片段)

图解服务化架构演进前言来自dubbo的用户手册中的一句话:随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保... 查看详情

从单体架构到微服务的服务化演进之路

...统应用开发面临的挑战服务化实践服务化不是银弹服务化架构的演进方向 一、传统应用开发面临的挑战挑战1–研发成本高主要体现在如下几个方面:代码重复率高在实际项目分工时,开发都是各自负责几个功能,即便开发... 查看详情

在微服务架构下基于prometheus构建一体化监控平台的最佳实践

...生时代的可观测事实标准,那么今天为大家带来在微服务架构下基于Prometheus构建一体化监控平台的最佳实践和一些相关的思考,内容主要包括以下几个部分:微服务、容器化技术演进的监控之痛云原生时代,为什么是Prometheus阿... 查看详情

微服务浅述---架构演进

微服务浅述---架构演进提到架构演进,我们很容易想到‘单体应用---分布式/SOA---微服务’的演进过程,那么为什么会有这个必然演进?演进的过程中遇到了哪些坑?是怎么解决这些坑的?为什么会有这个必然的架构演进?因为... 查看详情

小红书微服务框架及治理等云原生业务架构演进案例

‍在互联网世界,变化与演进是业务架构永恒的主题。技术迭代、业务演变等多重因素,一再提升着系统架构设计的难度和复杂度,可以说,没有一种架构是永久适用的,要想让自己的业务具有快速响应、快... 查看详情

19张图梳理springcloud中的重要知识点

目录1、什么是微服务1.1、架构演进1.2、微服务架构1.3、微服务解决方案2、SpringCloud概览2.1、什么是SpringCloud2.1、SpringCloud主要组件3、总结1、什么是微服务1.1、架构演进架构的发展历程是从单体式架构,到分布式架构,到SOA架构... 查看详情

互联网网站的架构演进

简单介绍了从单机网站到微服务网站的演进,从概念上讲述了什么是微服务。资源链接https://www.slidestalk.com/s/internet_architecture_revolution更多优质资源(示说网)点击登录即可免费下载 查看详情

软件架构的演进:单体垂直soa微服务

软件架构演进        软件架构的发展经历了从单体结构、垂直架构、SOA架构到微服务架构的过程,以下为具体分类: 1.1.1      单体架构        ... 查看详情

解析微服务架构:微服务重构应用及ibm解决方案

解析微服务架构系列文章将分几篇描述微服务的定义、特点、应用场景、企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型。上一篇文章介绍了融入微服务的企业集成... 查看详情