第一篇系统架构演变

波波烤鸭 波波烤鸭     2022-11-30     691

关键词:

  从2021年的10月份到2022年的7月份,历时9个月录制了一套商城系统。现在把相关的课件整理分享给大家。

一、系统架构演变

1.服务架构的演

1.1 单体架构

单体架构应该是我们最先接触到的架构实现了,在单体架构中使用经典的三层模型,即表现层,业务逻辑层和数据访问层。

单体架构只适合在应用初期,且访问量比较下的情况下使用,优点是性价比很高,开发速度快,成本低,但缺点也很明显,这时扩展的首先就是考虑服务器的集群处理。

1.2 集群

针对单个服务器在访问量越来越大的情况越来越吃力的情况,我们可以考虑服务器的集群话处理。

集群的部署大大提高了服务的处理能力,同时利用Nginx提供的负载均衡机制,来分发请求,使用户的体验没有改变。

1.3 垂直化

上面的集群部署是可以解决一部分的服务器压力,但是随着用户访问量的增多,集群节点增加到一定阶段的时候,其实作用就已经不是太大了,因为将所有的业务都集中在一起,造成耦合度很高,这时我们可以考虑业务的拆分。来提高系统的性能。比如将原来在一个系统里面的业务拆分为用户系统,订单系统和商品系统。也就是我们讲的垂直化拆分如下:

服务垂直化拆分后是可以大大的提高整体的服务处理能力,但是也会出现很多的冗余的代码,比如用户系统要操作订单库,要操作商品库,订单系统也有可能要操作用户库和商品库等。

1.4 服务化

针对垂直化拆分出现的问题,这时就出现了我们经常听到的SOA(面向服务的架构).什么是SOA呢?在《微服务设计》中有这么一段描述

SOA是一种设计方法,其中包括多个服务,而服务之间通过配合最终会提供一系列功能,一个服务通常以独立的形式存在于操作系统进程中,服务之间通过网络调用,而非采用进程内调用的方式进行通信。

业务重用,共享服务,

1.5 微服务化

在SOA的基础上继续演进就是我们讲的微服务。SOA的服务更细粒度的拆分后就是微服务。根据时间递进。

对基础运维的要求能力会越来越高,虚拟化,容器话等。

微服务和SOA的区别:

1.思想上:微服务的目的是解耦而SOA的目的是实现数据的互通和共享性。

2.协议:微服务会使用一些轻量级的通信协议(Restful API)

3.基础设施要求,微服务更加强调开发运维的持续交付。

2. 微服务架构的需求

2.1 RPC框架

在微服务架构中,服务与服务之间要实现接口的调用我们肯定要通过相关的RPC(Remote Procedure Call)框架来实现。

常用的RPC框架有:Dubbo,Google的GRPC,Apache的Thrift,微博的Motan,京东的EasyRPC等。我们通过RPC框架可以取调用服务提供者提供的服务,但有一个前提是我们要能找到这个服务。通常我们的服务部署都是集群多节点的部署,所以在消费者这端就不可能直接写死在代码里面,这时就涉及到了服务的发现问题,这时就需要另一个组件注册中心了

2.2 注册中心

注册中心实现服务地址管理的功能,解决服务动态感知(上线,下线)。

2.3 负载均衡

在服务注册中心的介绍中我们可以看到负载均衡的应用。我们可以通过Ribbon来实现客户端的负载均衡,负载均衡的策略可以是:轮询,随机,根据响应时间来计算权重的轮询等。

2.4 配置中心

在微服务架构中我们有很多个服务,而每个服务中是都会有单独的配置文件的。里面有很多的配置信息的有关联的,而且对于后期的更新维护也会非常的不方便,这时配置中心就上场了。常用的配置中心有:apollo/Nacos/disconf/zookeeper/diamond/Spring Cloud Config

2.5 网关

网关可以帮助我们完成用户请求的入口,路由。完成统一授权,日志的记录,权限的认证和限流及熔断操作。

2.6 限流、降级、缓存

在现实的微服务架构中的性能是很难满足所有的用户请求,这时我们就可以通过一些措施来保证我们的核心服务的正常运转。

限流:sentinel、hystrix

降级:主动降级(订单评论、广告关闭)、被动降级

缓存:降低数据源访问频率、Redis等

容错机制:服务出现挂机,宕机之后的处理机制。

2.7 Bus

Bus消息总线,实现异步化的通信机制。

2.8 链路监控

因为微服务中的服务实在是太多了,为了能更好的监控个服务的情况,肯定就需要链路监控服务,我们可以通过sleuth+zipkin来实现,应用层监控,系统级监控

一篇百度知道上的实际数据库需求变化及演变

在说HBase之前,我想再唠叨几句。做互联网应用的哥们儿应该都清楚,互联网应用这东西,你没办法预测你的系统什么时候会被多少人访问,你面临的用户到底有多少,说不定今天你的用户还少,明天系统用户就变多了,结果您... 查看详情

大型网站架构演变史(含技术栈与价值观)

...菇街CTO曽宪杰的《大型网站系统与Java中间件实践》写的一篇读书笔记。前言何谓大型网站?大型网站的特点是什么?大型网站架构发生演变的源动力是什么?大型网站的架构演变经历了哪些阶段?在演变的某个具体阶段使用到... 查看详情

架构思维第一篇

定义与实现解耦,运行时加载实现 代表性实现方式就是java里面的SPI机制。比如mysql的驱动mysql-connector-java里面有个MATA-INF/services目录,里面定义具体驱动类,这些驱动类都实现Driver类接口。如下图所示:驱动加载... 查看详情

软件系统架构演变

软件系统架构演变 单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。垂直应用架构当访问量逐渐增大,单一应... 查看详情

大型网站架构演变

...构体系。线上系统高可用参考指标:2、架构演变历程2.1.第一阶段【单机构建网站】网站程序用到的开源框架如maven+spring+struct+hibernate、maven+spring+springmvc+mybatis;网站初期,我们经常会用单机跑所有的程序和软件。通常由appserver... 查看详情

系统架构演变与springcloud简介

系统架构的演变随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统架构也在不断的演变、升级、迭代。从单一应用到垂直拆分、到分布式服务、到SOA,以及当下较火的微服务架... 查看详情

大数据flink进阶:数据架构的演变

...大的特点是集中式数据存储,一个企业中可能有很多业务系统,例如:订单系统、CRM系统、ERP系统等,这些系统的数据一般存储在关系型数据库中,这些存储的数据一般反应当前的业务状态,也就是存储的是支撑业务正常运转的... 查看详情

大型网站架构-1.架构的演变过程

1.第一阶段:单服务器架构这一阶段是我们的起步阶段,比如我们创业的时候刚购买了一台云主机。在这一阶段,为了节约成本,我们将所有的应用程序,数据库,文件全部放在这台服务器上。然后,CPU或者内存的成本在开发阶... 查看详情

网站系统架构演变

...。二、背景说明?  我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,慢慢的... 查看详情

数仓第一篇:基础架构

目录01.架构演进02.逻辑分层03.数据调研04.主题域划分05.数仓规范06.数据治理07.数仓理念01.架构演进离线数据仓库到实时数据仓库,从lambda架构到kappa架构、再到混合架构。02.逻辑分层数仓分层,一般按ods->dw->dm整体架... 查看详情

数仓第一篇:基础架构

目录01.架构演进02.逻辑分层03.数据调研04.主题域划分05.数仓规范06.数据治理07.数仓理念01.架构演进离线数据仓库到实时数据仓库,从lambda架构到kappa架构、再到混合架构。02.逻辑分层数仓分层,一般按ods->dw->dm整体架... 查看详情

数字化企业架构演变

...--------------------------今天先到这儿,希望对您在企业架构,系统架构设计与评估,团队管理,项目管理,产品管理,团队建设有参考作用,您可能感兴趣的文 查看详情

大型网站架构的发展演变过程(代码片段)

...者缺一不可。我们以javaweb为例,来搭建一个简单的电商系统,从这个系统中来看系统的演变历史;要注意的是,接下来的演示模型,关注的是数据量、访问量提升,网站结构发生的变化,而不是具体关注业务功能点。其次,这... 查看详情

转载:大型网站架构演变和知识体系

https://wenku.baidu.com/view/42081217581b6bd97e19ea04架构演变第一步:物理分离webserver和数据库最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程,... 查看详情

《唯品会峰值系统架构演变》

...好的东西,所以在大促的一开始,会涌入大量用户,形成系统流量峰值。本文总结了唯品会419时日志平台遇到的问题和解决方案,同时根据实践经验,整理了在面对峰值前要做的准备 查看详情

java高级软件架构师实战培训阶段二

...----第02节课:分布式部署基础知识;系统分布式部署演变第一部分第03节课:系统分布式部署演变第二部分;分布式部署带来的问题第04节课:模块间相互调用:问题、方案,自行实现方案的 查看详情

基于并发订课系统的架构演变

 最初的系统原型是Aspx+IIS+MsSql2008,简单的三层结构,通过简单的排课-放课-学员订课的业务基础,满足了当时的系统需要。 后来随着业务逐步完善,学员越来越多的情况下,当时的系统无法满足需求,导致经常崩溃和系... 查看详情

第一篇:gpu编程技术的发展历程及现状

前言      本文通过介绍GPU编程技术的发展历程,让大家初步地了解GPU编程,走进GPU编程的世界。冯诺依曼计算机架构的瓶颈       曾经,几乎所有的处理器都是以冯诺依曼计算机架... 查看详情