• 服务端架构演进史


     

    正文

    一、引子

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

    注:本文是笔者最近读了周志明大神(《深入理解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/ 凤凰架构  周志明。

  • 相关阅读:
    Postman-Installation has failed
    信息安全实验一:DES加密算法的实现
    logos_HSST简要说明
    故障:Outlook 收发邮件时的 0x800CCC1A 错误
    浅谈高速公路服务区分布式光伏并网发电
    数据结构之顺序表及其实现!
    使用idea运行VUE项目
    重修之Java-基础篇-数据类型和运算符
    Pentaho Kettle Cluster Principle
    241.为运算表达式设计优先级(分治算法)
  • 原文地址:https://www.cnblogs.com/dennyzhangdd/p/16919409.html