架构的演进

1.1单体架构

单体架构也称之为单体系统或者是单体应用。就是一种把系统中所有的功能、模块耦合在一个应用中的架构方式。

存在的问题:

  1. 代码耦合:模块的边界模糊、依赖关系不清晰,整个项目非常复杂,每次修改代码都心惊胆战
  2. 迭代困难:每次功能的变更或bug的修复都会导致重新部署整个应用,随着代码的增多,构建、测试和部署的时间也会增加
  3. 扩展受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行伸缩
  4. 技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多不坏不修
  5. 阻碍创新:单体应用往往使用统一的技术平台或方案解决所有的问题,要想引入新技术平台会非常困难

1.2分布式架构 

分布式:需要按照功能点把系统拆分,拆分成独立的功能,单独为某一个节点添加服务器,需要系统之间配合才能完成整个业务逻辑。

分布式架构优点:

  1. 不同的团队负责不同的子项目
  2. 可以灵活的进行分布式部署
  3. 可以为某一模块单独加集群

分布式架构缺点:

  1. 模块之间有一些通用的业务逻辑无法共用。

1.3soa架构 

SOA:Service Oriented Architecture(面向服务的架构)。也就是把工程拆分成服务层,表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现,使用ESB(Enterparise Servce Bus企业服务总线,代表技术:Mule、WSO2)提供表现层和服务层之间的交互。

存在的问题:

  1. 不支持集群、臃肿

1.4微服务架构

微服务架构是一种架构模式,或者说是一种架构风格,它提倡将单一的应用程序划分成一组小的服务,每个服务运行在其独立的自己的进程内,服务之间相互协调,互相配合,为服务提供最终的价值。服务之间采用轻量级的通信机制互相沟通,每个服务都围绕着具体的业务进行构建,并且能够被独立的部署到生产环境中,另外,应尽量避免统一的,集中式的服务管理机制,对具体的一个服务而言,应根据服务上下文,选择合适的语言,工具进行构建,可以有一个非常轻量级的集中式管理来协调这些服务,可以使用不同的语言来编写服务,也可以使用不同的数据存储。

从技术维度理解:

微服务化的核心就是将传统的一站式应用,根据业务拆分成一个一个的服务,彻底的去耦合,每一个微服务提供单个业务功能的服务,一个服务做一件事,从技术角度看就是一种小而独立的处理过程,类似进程的概念,能够自行单独启动或销毁,拥有自己独立的数据库。

优点

●单一职责原则

●每个服务足够内聚,足够小,代码容易理解,这样能聚焦一个指定的业务功能或业务需求;

●开发简单,开发效率提高,一个服务可能就是专-的只干一件事;

●微服务能够被小团队单独开发,这个小团队是2~5人的开发人员组成;

●微服务是松耦合的,是有功能意义的服务,无论是在开发阶段或部署阶段都是独立的。

●微服务能使用不同的语言开发。

●易于和第三方集成,微服务允许容易且灵活的方式集成自动部署,通过持续集成工具,如jenkins, Hudson,bamboo

●微服务易于被一 个开发人员理解,修改和维护,这样小团队能够更关注自己的工作成果。无需通过合作才能体现价值。

●微服务允许你利用融合最新技术。

●微服务只是业务逻辑的代码,不会和HTML,CSS 或其他界面混合

●每个微服务都有自己的存储能力,可以有自己的数据库,也可以有统- 数据库

缺点:

●开发人员要处理分布式系统的复杂性

●多服务运维难度,随着服务的增加,运维的压力也在增大●系统部署依赖

●服务间通信成本

●数据一致性

1.5分布式系统中的相关概念

1.5.1衡量网站性能指标:

  • 响应时间:指执行一个请求从开始到最后收到相应数据所花费的总体时间
  • 并发数:指系统同时能处理的请求数量

          ①并发连接数:指的是客户端向服务器发起的请求,并建立了TCP连接,每秒钟服务器连接的总的TCP数量

          ②请求数:也称为QPS(Query Per Second)指每秒多少请求

          ③并发用户数:指单位时间内有多少用户

  • 吞吐量:指单位时间内系统能处理的请求数量 

         ①QPS:Query Per Second每秒查询数

         ②TPS:Transaction Per Second每秒事务数

         ③一个事务是指一个客户机向服务器发送请求然后服务器做出的反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。 

1.5.2集群和分布式 

集群:很多人“人”一起,干一样的事

  • 一个业务模块,部署在多台服务器上。

分布式:很多“人”一起,不干一样的事,这些不一样的事,合起来就是一件大事。

  • 一个大的业务系统,拆分为小的业务模块,分别部署在不同的机器上。

1.5.3微服务架构 

微服务架构是在SOA 上做的升华,微服务架构强调的是一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

微服务架构=80%的SOA服务架构思想+100%的组件化架构思想+80%的领域建模思想

特点:

      ①服务实现组件化:开发者可以自由选择开发技术,也不需要协调其他团队

      ②服务之间交互一般使用REST API 

      ③去中心化:每个微服务有自己私有的数据库持久化业务数据

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417664.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux基础学习(5):yum

yum是为了解决rpm包安装依赖性而产生的一种安装工具 1.yum源 1.1配置文件位置 yum源的配置文件在/etc/yum.repos.d/中 *Base源是网络yum源,也就是需要联网才能使用的yum源。默认情况下,系统会使用Base源 *Media源是光盘yum源,是本地yum源…

论文阅读笔记AI篇 —— Transformer模型理论+实战 (三)

论文阅读笔记AI篇 —— Transformer模型理论实战 (三) 第三遍阅读(精读)3.1 Attention和Self-Attention的区别?3.2 Transformer是如何进行堆叠的?3.3 如何理解Positional Encoding?3.x 文章涉及…

【数据结构】详谈队列的顺序存储及C语言实现

循环队列及其基本操作的C语言实现 前言一、队列的顺序存储1.1 队尾指针与队头指针1.2 基本操作实现的底层逻辑1.2.1 队列的创建与销毁1.2.2 队列的增加与删除1.2.3 队列的判空与判满1.2.4 逻辑的局限性 二、循环队列2.1 循环队列的实现逻辑一2.2 循环队列的实现逻辑二2.3 循环队…

CodeReview 小工具

大家开发中有没有遇到一个版本开发的非常杂,开发很多个项目,改动几周后甚至已经忘了自己改了些什么,领导要对代码review的时候,理不清楚自己改过的代码,只能将主要改动的大功能过一遍。这样就很容易造成review遗漏&…

软件测试(一)

软件测试——测试用例 🏐测试用例要素(四个重要的要素)🏐测试用例的设计方法🏀基于需求的设计方法🏀等价类🏀边界值🏀判定表🏀正交表法🏀场景设计法&#x1f…

Prompt高级技巧:Few-Shots、COT、SC、TOT、Step-Back

CRISPE框架 如图所示。所谓CRISPE框架,指的是: CR:Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。I:Insight(洞察),背景信息和上下文。S:&#xff08…

在IDEA上运行成功,打包成jar包后,运行报错,程序自动退出

原因 java环境不正确,很有可能安装了多个环境,导致程序加载了错误程序。 解决办法 尝试修改环境变量,如果不行,建议删除掉多余的java环境。 注意:删除掉多余的Java环境需要用程序删除,直接删除文件&#xf…

两年过去,这个“核弹级”漏洞仍未消散

还记得2年前,那个号称“核弹级”的漏洞吗? 没错,就是现代网络安全史上最严重的漏洞“Log4shell”。当它刚被爆出的时候,全世界都炸了锅,各国政府积极响应,发布警告应对漏洞威胁,各家公司积极排…

海外云手机:跨境养号的新趋势

近年来,市场综合数据显示,利用海外云手机进行跨境养号已经成为跨境电商发展的新潮流。特别是在社交电商营销和短视频引流领域,海外云手机不仅能够提高流量的质量,还能让商家实现业务翻倍增长。接下来,本文将简要阐述海…

C++ 学习系列 -- std::function 与 std::bind

一 std::function 与 std::bind 的介绍 1. std::function std::function 是 c 11 的新特性 &#xff0c;包含在头文件<functional>中&#xff0c;为了更方便的调用函数而引入。 std::function 是一个函数包装器&#xff08;function wrapper&#xff09;&#xff0c;…

day24 回溯算法 组合

题目1&#xff1a;77 组合 题目链接&#xff1a;77 组合 题意 返回[1,n]中k个数的组合 元素不可以重复使用 回溯 回溯三部曲 1&#xff09;参数和返回值 void n k 2&#xff09;终止条件 叶子节点的大小为2 终止&#xff0c;放到数组中 3&#xff09;单层递归逻辑…

23级应届生如何找java工作?

Java应届生找工作&#xff0c;不能单靠背面试题&#xff0c;更不能在简历中堆砌和找工作关系不大的校园实践经历&#xff0c;而是更要在面试中能证明自己的java相关商业项目经验。其实不少应届生Java求职者不是说没真实Java项目经验&#xff0c;而是不知道怎么挖掘&#xff0c;…