| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 架构演变进程:单体 -> 分布式系统(微服务架构) -> 正文阅读 |
|
[Java知识库]架构演变进程:单体 -> 分布式系统(微服务架构) |
一、单体应用架构1.概念:一个应用中包含了应用程序所有的功能(比如:页面、代码、配置等)把应用程序打包成war包、jar包部署到Tomcat中,通常称之为单体架构; 2.优缺点: (1)优点:便于共享,易于测试,易于部署; (2)缺点:代码间关系复杂,难以理解和维护;项目体积变大,开发、测试、部署的过程都无比困难;无法使用新框架;可靠性下降。 3.解决单体应用缺点方案:拆——一个单体应用拆分成多个服务,每个服务有自己独立的数据库;单个服务的复杂度降低;服务与服务之间需要通信,协调。 二、微服务架构1.概念:微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统。其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制来相互通信。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。这些微服务可以使用不同的语言来编写,并且可以使用不同的数据存储技术。对这些微服务,我们仅做最低限度的集中管理。????????????????????????????????????????????????????????????????——?世界级软件架构大师 Martin Fowler ?2.优点: ? ? ? ? (1)易于开发和维护:一个微服务只会关注一个特定的业务功能,所以业务清晰、代码量较少。开发和维护单个微服务相对简单。 3.缺点: ? ? ? ? (1)运维要求高:更多的服务意味着要投入更多的运维。 三、分布式系统1。概念:分布式系统就是一组部署在同一个网络下的多个通过网络来通信和协调的组件,对外部而言表现的如同一个系统。 2.分类: ????????(1)可以指多个不同组件分布在网络上互相协作,比如前例所说的电商网站; ? ????????(2)也可以一个组件的多个副本组成集群,互相协作如同一个组件,比如数据存储服务中为了数据不丢失而采取的多个服务备份冗余,当数据修改时也需要通信来复制数据 ?3.结论: ????????(1)微服务架构 是 分布式系统,分布式系统不一定是微服务架构; ????????(2)应用系统当中,这两种的集群模式都有出现。 四、CAP原理1.概念:1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标,CAP,而这三个指标无法同时满足,这个结论称为CAP定理。 2.三大指标:Consistency 一致性、Availability 可用性、Partition tolerance 分区容错性; ?2.1、Consistency——一致性 ????????致性是指,在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于访问任一节点得到的都是最新的数据副本)。 ??2.2、Availability——可用性 ????????可用性是指,在集群中一部分节点故障后,集群整体是否还能正常响应客户端的读写请求。(对数据更新具备高可用性)。 ?2.3、Partition tolerance——分区容错性 ????????分区容错性是指 系统必须能够处理组件之间因为通信失败(或者延迟)而造成分区的情况。通信出现故障就会形成多个分区,此时系统无法同时保证数据的一致性和可用性。 (例)继续以三个节点的存储系统为例,若是S1与另外两个节点的通信出现问题,那么就形成了S1和S2+S3两个分区,此时数据必然无法达成一致性。 此时有两个解决方案 一是暂停或关闭所有节点,等待网络恢复,数据达成一致,这样保证了数据一致性。 另一个是继续提供服务,保证可用性,那么访问S1和访问S2、S3得到的将会不同的数据,不满足一致性 无论使用哪一种方案,都无法保证CAP同时成立。 ?五、BASE原理? ? ? ? Basically Available(基本可用) ????????Soft state(软状态) ????????Eventually consistent(最终一致性) ????????在分布式系统设计中引入柔性因素,降低设计和实现的难度,但又不影响基本使用; ????????设计上的妥协和折中 六、Spring-Cloud1、概念:微服务架构工具集,提供了搭建微服务架构所需用的各种工具,借由这些工具,开发人员可以快速的搭建一个微服务架构。
Spring Cloud称为 伞形项目,由多个子项目组成 2、Spring Cloud下的三个重要子项目: ????????(1)spring-cloud-netflix——spring-cloud第一个子项目,应用广泛; ????????(2)spring-cloud-alibaba——阿里巴巴出品,国产,中文,符合中国国情,在国内采用比较多; ????????(3)spring-cloud官方组件 3、项目技术选型:
注:选用不同子项目的不同组件来搭建架构,不同组件之间是兼容的(都在spring-cloud之下)。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:38:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |