zoukankan      html  css  js  c++  java
  • 软件架构演进

    传统架构到分布式架构详解 

    软件架构演进
    软件架构的发展经历了从单体架构、垂直架构、SOA架构到微服务架构的过程,博客里写到了这四种架构的特点以及优缺点分析,个人学习之用,仅供参考!

    1.1.1 单体架构

    特点:
    1、所有的功能集成在一个项目工程中。
    2、所有的功能打一个war包部署到服务器。
    3、应用与数据库分开部署。
    4、通过部署应用集群和数据库集群来提高系统的性能。

    优点:
    1、项目架构简单,前期开发成本低,周期短,小型项目的首选。

    缺点:
    1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
    2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。
    3、技术栈受限。

    1.1.2 垂直架构

    特点
    当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。
    此时,用于加速前端页面开发的 Web框架(MVC) 是关键。

    优点:
    1、项目架构简单,前期开发成本低,周期短,小型项目的首选。
    2、通过垂直拆分,原来的单体项目不至于无限扩大。
    3、不同的项目可采用不同的技术。

    缺点:
    1、全部功能集成在一个工程中,对于大型项目不易开发、扩展及维护。
    2、系统性能扩展只能通过扩展集群结点,成本高、有瓶颈。

    1.1.3 SOA架构

    面向服务架构,如dubbo

    优点:
    把模块拆分,使用接口通信,降低模块之间的耦合度
    把项目拆分成若干个子项目,不同的团队负责不同的子项目
    增加功能时只需要在增加一个子项目,调用其它系统的接口就可以
    可以灵活的进行分布式部署

    缺点:
    系统之间交互需要使用远程通信,接口开发增加工作量

    1.1.4 微服务架构

    特点:
    1、将系统服务层完全独立出来,并将服务层抽取为一个一个的微服务。
    2、微服务遵循单一原则。
    3、微服务之间采用RESTful等轻量协议传输。

    优点:
    1、服务拆分粒度更细,有利于资源重复利用,提高开发效率。
    2、可以更加精准的制定每个服务的优化方案,提高系统可维护性。
    3、微服务架构采用去中心化思想,服务之间采用RESTful等轻量协议通信,相比ESB更轻量。
    4、适用于互联网时代,产品迭代周期更短。

    缺点:
    1、微服务过多,服务治理成本高,不利于系统维护。
    2、分布式系统开发的技术成本高(容错、分布式事务等),对团队挑战大。

    要解决的技术难点:
    1、这么多服务,怎么找?
    通过zookeeper做服务注册信息的分布式管理。当服务上线时,服务提供者将自己的服务信息注册到ZK,并通过心跳维持长链接,实时更新链接信息。服务调用者通过ZK寻址,根据可定制算法,找到一个服务,还可以将服务信息缓存在本地以提高性能。当服务下线时,ZK会发通知给服务客户端。 
                   
    主流的注册中心:zookeeper、Eureka、consul、etcd

    2、服务之间如何通信?
    因为所有的微服务都是独立的Java进程跑在独立的虚拟机上,所以服务间的通信就是IPC(inter process communication),已经有很多成熟的方案。比如基于HTTP的REST或者Thrift

    3、这么多服务,服务挂了怎么办?
    重试机制
    熔断机制
    限流/降级
    负载均衡

  • 相关阅读:
    STL标准库algorithm中remove()函数的一个小注意事项
    关于 mem_fun_ref 和 bind2nd的疑问
    记录昨日程序调不通的解释
    复习几个C++概念:声明与定义、传值与拷贝构造、初始化和赋值
    对stl map 赋值添加元素的疑惑 求解(管理员让这个帖子多见会人吧~~谢谢啦!)
    摘抄书上一个逆序字符串的例子(可根据不同的符号,比如*&,.;来拆分单词)
    “指向指针的引用”小例子:忽然豁然开朗~
    论文 “tracking evolving communities in large linked networks” 中不懂的问题和知识总结
    [wp7软件]wp7~~时间日程 软件大全! 集合贴~~~
    [wp7游戏]wp7~~超级血腥类游戏~~集合贴~~
  • 原文地址:https://www.cnblogs.com/linjiqin/p/10074004.html
Copyright © 2011-2022 走看看