只会一点java

java持续学习者,每月一篇博客。罗列出技术栈,慢慢完善,持续学习,总有一天,你会追上甚至超越曾经的大神。
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

服务端架构演进史

Posted on 2022-12-05 18:55  只会一点java  阅读(350)  评论(0编辑  收藏  举报

一、引子

当我们入行成为一名后端程序员时,就很羡慕架构师这个岗位的人,视同神一样的存在。而要成为一名后端架构师,必会技能就是分布式架构。今天我们不讲各种组件怎么去实现分布式细节,而是从分布式服务的这一角度来看历史的发展。 目的就一个:构建并丰富自己的架构知识体系。(普通人差大神多少?选对方向,持之以恒而已。)

注:本文是笔者最近读了周志明大神(《深入理解Java虚拟机》的作者)的凤凰架构,才有了这篇总结。老规矩,膜拜一下大神先:

 

二、演进史

老司机可以直接跳到第三节,看总结即可。

2.1 单体架构(Monolithic)

概念:“单体”只是表明系统中主要的过程调用都是进程内调用,不会发生进程间通信,仅此而已。

优点:一切资源都在一个进程内调用。简单方便易实现

缺点:无法做到隔离、技术异构

 

2.2 SOA架构(Service-Oriented Architecture)

概念:面向服务的架构是一次具体地、系统性地成功解决分布式服务主要问题的架构模式。

优点:为了解决企业级分布式服务的各种问题,第一次形成了统一的技术设计原则和SOAP协议簇。

缺点:SOAP 过于严格的规范定义带来过度的复杂性

 

2.3 微服务架构(Microservices)

概念:微服务是一种通过多个小型服务组合来构建单个应用的架构风格,这些服务围绕业务能力而非特定的技术标准来构建。各个服务可以采用不同的编程语言,不同的数据存储技术,运行在不同的进程之中。

优点:第一次在软件层面提供了解决服务治理的全家桶,比如springCloud。

缺点:程序代码耦合了技术组件,有一定的代码侵入

 

2.4 云原生架构(Cloud Native)

概念:从软件层面独力应对微服务架构问题,发展到软、硬一体,合力应对架构问题的时代,即“后微服务时代”。

优点:服务治理作为基础设施分离,实现了业务和技术的解耦

缺点:主流实现依赖k8s环境,上车较为复杂;引入“服务网格”(Service Mesh)的“边车代理模式”(Sidecar Proxy),会有性能损耗

 

2.5 无服务架构(Serverless)

概念:如果说微服务架构是分布式系统这条路的极致,那无服务架构,也许就是“不分布式”的云端系统这条路的起点。

优点:服务上云端(快速部署,弹性扩容),使用云计算技术、实现函数式业务能力。业务完全不用关心技术(数据+计算都交给第三方)。

缺点:目前看来,只能算是一种云计算架构(函数计算),还未成熟,不能替代复杂业务应用

三、总结

大体可以分为四个大阶段:

  1. 单体架构时代(2006年之前):包括原始的分布式时代,DCE体系分布式技术体系的提出,但由于计算机性能发展很快,单体架构是主流架构。
  2. SOA时代(2006-2016):这十年是各大厂商涌入SOA的黄金年代。可惜的是,封闭式的收费模式最终被开源的spring打败,泯灭在了历史的尘烟。
  3. 微服务时代(2016-至今):
    • 【2016-2020】2016年以SpringCloud为代表的初代微服务时代蓬勃发展,
    • 【2020-至今】在2017年Kubernetes一统容器架构后,Cloud Native出现,典型代表Istio,在国内2020年开始火起来。可以称为后微服务时代,目前看来再火个5年问题不大。
  4. 无服务时代(2018-至今):从2010年开始,随着云计算的快速发展,2018年阿里腾讯加入无服务架构(Serverless)阵营,并相继开放了商业版FAAS产品,可以称为未来的服务架构,目前并未成熟,不能替代复杂业务服务

 

 

 

 

 

 

 

 

=========参考===================

http://icyfenix.cn/ 凤凰架构  周志明。