一、引子
当我们入行成为一名后端程序员时,就很羡慕架构师这个岗位的人,视同神一样的存在。而要成为一名后端架构师,必会技能就是分布式架构。今天我们不讲各种组件怎么去实现分布式细节,而是从分布式服务的这一角度来看历史的发展。 目的就一个:构建并丰富自己的架构知识体系。(普通人差大神多少?选对方向,持之以恒而已。)
注:本文是笔者最近读了周志明大神(《深入理解Java虚拟机》的作者)的凤凰架构,才有了这篇总结。老规矩,膜拜一下大神先:
二、演进史
老司机可以直接跳到第三节,看总结即可。
2.1 单体架构
概念:“单体”只是表明系统中主要的过程调用都是进程内调用,不会发生进程间通信,仅此而已。
优点:一切资源都在一个进程内调用。简单方便易实现。
缺点:无法做到隔离、技术异构。
2.2 SOA架构(Service-Oriented Architecture)
概念:面向服务的架构是一次具体地、系统性地成功解决分布式服务主要问题的架构模式。
优点:为了解决企业级分布式服务的各种问题,第一次形成了统一的技术设计原则和SOAP协议簇。
缺点:SOAP 过于严格的规范定义带来过度的复杂性。
2.3 Microservices微服务架构
概念:微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言,不同的数据存储技术,运行在不同的进程之中。
优点:第一次在软件层面提供了解决服务治理的全家桶,比如springCloud。
缺点:程序代码耦合了技术组件,有一定的代码侵入。
2.4 Cloud Native云原生架构
概念:从软件层面独力应对微服务架构问题,发展到软、硬一体,合力应对架构问题的时代,即“后微服务时代”。
优点:把服务治理作为基础设施分离,实现了业务和技术的解耦。
缺点:主流实现依赖k8s环境,上车较为复杂;引入“服务网格”(Service Mesh)的“边车代理模式”(Sidecar Proxy),会有性能损耗。
2.5 Serverless无服务架构
概念:如果说微服务架构是分布式系统这条路的极致,那无服务架构,也许就是“不分布式”的云端系统这条路的起点。
优点:服务上云端(快速部署,弹性扩容),使用云计算技术、实现函数式业务能力。业务完全不用关心技术(数据+计算都交给第三方)。
缺点:目前看来,只能算是一种云计算架构(函数计算),还未成熟,不能替代复杂业务应用。
三、总结
大体可以分为四个大阶段:
- 单体架构时代(2006年之前):包括原始的分布式时代,DCE体系分布式技术体系的提出,但由于计算机性能发展很快,单体架构是主流架构。
- SOA时代(2006-2016):这十年是各大厂商涌入SOA的黄金年代。可惜的是,封闭式的收费模式最终被开源的spring打败,泯灭在了历史的尘烟。
-
微服务时代(2016-至今):
- 【2016-2020】2016年以SpringCloud为代表的初代微服务时代蓬勃发展,
- 【2020-至今】在2017年Kubernetes一统容器架构后,Cloud Native出现,典型代表Istio,在国内2020年开始火起来。可以称为后微服务时代,目前看来再火个5年问题不大。
- 无服务时代(2018-至今):从2010年开始,随着云计算的快速发展,2018年阿里腾讯加入无服务架构(Serverless)阵营,并相继开放了商业版FAAS产品,可以称为未来的服务架构,目前并未成熟,不能替代复杂业务服务。
=========参考===================
http://icyfenix.cn/ 凤凰架构 周志明。