当前位置: 首页 > news >正文

Linux-【单体架构/分布式架构】

在这里插## 标题入图片描述

> 						大家好,我是程序员小羊!

✨博客主页: https://blog.csdn.net/m0_63815035?type=blog

💗《博客内容》:.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识
📢博客专栏: https://blog.csdn.net/m0_63815035/category_11954877.html
📢欢迎点赞 👍 收藏 ⭐留言 📝
📢本文为学习笔记资料,如有侵权,请联系我删除,疏漏之处还请指正🙉
📢大厦之成,非一木之材也;大海之阔,非一流之归也✨

在这里插入图片描述

目录

  • 一、单体架构
    • 1.1单体架构的定义和特点
    • 1.2单体架构的部署
    • 1.3服务器和数据中心介绍
  • 二、垂直架构与分布式架构
    • 2.1垂直架构(门户系统展示)
    • 2.2垂直架构面临的问题和挑战
    • 2.3分布式锁的必要性
    • 2.4分布式锁的实现方式
    • 2.5外部加锁的实现
    • 2.6乐观锁的实现原理
    • 2.7ABA问题的解决
  • 三、微服务架构
    • 3.1微服务架构概述
    • 3.2微服务架构举例
    • 3.3 微服务架构的特点
    • 3.4微服务架构的挑战
    • 3.5微服务架构的优缺点
    • 3.6微服务架构的技术栈
    • 3.7虚拟化技术与容器化技术
    • 3.8微服务架构的生态图
    • 3.9CI/CD流程在微服务架构中的应用

一、单体架构

1.1单体架构的定义和特点

1.单体架构定义:整个项目所有功能都写在一个包中。

2.单体架构特点:架构简单、开发简单、部署简单。

3.单体架构示例:小型管理系统等项目采用单体架构。
缺点:
1.代码重构难:所有代码在一个项目中,修改代码可能影响整个系统。

2.代码史删:项目代码冗余,工具类代码重复。

3.项目升级周期长:项目包大,上传和部署时间长,不适合敏捷开发。
在这里插入图片描述

1.2单体架构的部署

1.部署方式:将项目打包成WAR包,部署在Tomcat服务器或Spring Boot内置的Tomcat中。
2.服务器访问:通过IP地址和端口访问部署在服务器上的项目。
3.异地多活:通过在多个数据中心部署服务器,提高系统的可用性。

1.3服务器和数据中心介绍

1.服务器定义:包含CPU、内存和硬盘的计算设备。
2.数据中心定义:互联网数据中心(IDC),包含多个机架和服务器。
3.机架定义:用于安装服务器的设备,包含多个硬盘。
4.上云趋势:中小型公司倾向于使用云服务器,降低运维成本。

二、垂直架构与分布式架构

概念:

垂直架构:通过将项目拆分为多个服务,实现分布式部署。
分布式架构:通过多个服务器共同完成一个任务,提高系统性能和可扩展性。
集群:是指多个服务器做相同的事情,提供分散的压力,单个业务处理时间没有缩短。
分布式:是指多个服务器共同完成一件事,提高业务处理速度。大型公司倾向于同时采用集群和分布式技术(垂直),以应对高并发和业务需求。

在这里插入图片描述

2.1垂直架构(门户系统展示)

1.垂直架构是分布式架构的一种形式。
2.垂直领域是指纯粹的领域,没有其他内容干扰。
3.京东商城可以按照垂直领域进行划分,分为门户系统、商户系统和物流系统。
在这里插入图片描述

1.优点:架构简单,压力分散,代码安全,技术选型多。
2.缺点:程序员要求高,技术难点多,如分布式事务和锁的问题。

2.2垂直架构面临的问题和挑战

1.垂直架构面临数据库一致性问题。
2.多个数据库需要处理数据一致性,避免数据冲突。
3.分布式事务和两阶段提交等技术用于解决数据一致性问题。

2.3分布式锁的必要性

1.抢红包功能示例,说明在并发情况下,未加锁的代码会导致优惠券被重复抢夺。
2.加锁的必要性,通过synchronized等同步机制解决并发问题。

在这里插入图片描述

2.4分布式锁的实现方式

1.代码同步化:通过synchronized等机制实现代码的同步访问。
2.乐观锁:通过比较并交换(CS)机制,无锁思想,通过版本号解决ABA问题。

2.5外部加锁的实现

1.在外部加锁,使用多进程可见的组件,如ZooKeeper。
2.ZooKeeper的实现原理,满足多进程可见、高可用、互斥性等要求。
在这里插入图片描述

2.6乐观锁的实现原理

1.乐观锁的定义,通过版本号解决ABA问题。
2.CAS操作,比较并交换,通过版本号确保数据的一致性。
在这里插入图片描述

2.7ABA问题的解决

1.ABA问题的定义,数据被修改后恢复原值。
2.通过版本号解决ABA问题,确保数据的一致性。

三、微服务架构

3.1微服务架构概述

1.微服务架构是将项目功能拆分为多个独立的服务进行开发。
2.每个服务都独立部署、扩展和管理。
3.微服务架构的两大版本:面向服务架构(SOA)和微服务架构。
在这里插入图片描述

3.2微服务架构举例

1.以京东商城为例,每个功能模块都作为一个独立的服务开发。
2.服务包括用户模块、搜索模块、购物车模块、订单模块、支付模块等。
3.每个服务都有独立的IP地址和端口。
在这里插入图片描述

3.3 微服务架构的特点

1.服务细粒度:每个功能都是一个独立的服务。
2.独立性:服务独立部署、扩展和管理。
3.可伸缩性:每个服务可以独立扩容。

3.4微服务架构的挑战

1.服务器成本:微服务架构需要大量的服务器,增加成本。
2.资源利用:虚拟机和容器技术用于充分利资源。
3.测试复杂性:微服务架构测试困难,需要测试每个服务的交互流程。

3.5微服务架构的优缺点

1.优点:代码分散、代码安全、开发简单。
2.缺点:架构复杂、测试困难、技术要求高。

3.6微服务架构的技术栈

1.客户端:APP、小程序、PC、物联网。
2.DNS域名解析:将域名解析为IP地址。
3.防火墙:检查请求合法性。
4.网关:处理请求路由、身份验证。
5.注册中心:服务发现与注册。
6.服务网关:转发请求、身份验证。
7.负载均衡:分发请求。
8.熔断限流降级:保护服务。
9.数据层:关系数据库、缓存、搜索引擎、MongoDB。
10.日志框架:ELK(Elasticsearch、Logstash、Kibana)。
11.链路追踪:Zipkin或SkyWalking。
12.定时任务:XXL-JOB或Spring Batch。
13.配置中心:Spring Cloud Config或Apollo。
14.监控中心:Prometheus、Grafana。

3.7虚拟化技术与容器化技术

1.虚拟机:重虚拟化,整个操作系统虚拟化。
2.容器化:轻虚拟化,细粒度虚拟化,只包含所需资源。
3.容器技术:Docker,用于创建和运行容器。
4.虚拟化管理:Kubernetes,用于容器项目的发布上线。

3.8微服务架构的生态图

1.客户端:APP、PC、物联网。
2.DNS域名解析。
3.防火墙。
4.网关:Spring Cloud Gateway或Nginx。
5.注册中心:Eureka、Zookeeper或Nacos。
6.监控中心:Prometheus、Grafana。
7.日志框架:ELK。
8.链路追踪:Zipkin或SkyWalking。
9.配置中心:Spring Cloud Config或Apollo。
10.定时任务:XXL-JOB或Spring Batch。
11.数据层:关系数据库、缓存、搜索引擎、MongoDB。
12.开发运维工具:Maven私服、GitLab。
13.容器管理:Docker、Kubernetes。

3.9CI/CD流程在微服务架构中的应用

1.自动化测试:通过CI/CD流程进行自动化测试。
2.持续集成:自动构建、测试代码变更。
3.持续交付:将代码变更交付到测试环境或生产环境。

在这里插入图片描述

今天这篇文章就到这里了,大厦之成,非一木之材也;大海之阔,非一流之归也。感谢大家观看本文

在这里插入图片描述


文章转载自:
http://cga.hfstrb.cn
http://chrysanthemum.hfstrb.cn
http://bogy.hfstrb.cn
http://cabalistic.hfstrb.cn
http://antheap.hfstrb.cn
http://bisexual.hfstrb.cn
http://browsy.hfstrb.cn
http://cherubic.hfstrb.cn
http://amtorg.hfstrb.cn
http://bistable.hfstrb.cn
http://aeromechanic.hfstrb.cn
http://barratrous.hfstrb.cn
http://alkali.hfstrb.cn
http://algous.hfstrb.cn
http://apod.hfstrb.cn
http://chinese.hfstrb.cn
http://calvarian.hfstrb.cn
http://benighted.hfstrb.cn
http://breastwork.hfstrb.cn
http://cabezon.hfstrb.cn
http://appui.hfstrb.cn
http://adrift.hfstrb.cn
http://anthony.hfstrb.cn
http://approximation.hfstrb.cn
http://chorioallantois.hfstrb.cn
http://chordamesoderm.hfstrb.cn
http://bonanza.hfstrb.cn
http://aforenamed.hfstrb.cn
http://acid.hfstrb.cn
http://blarney.hfstrb.cn
http://www.dtcms.com/a/280243.html

相关文章:

  • Web3 学习路线与面试经验
  • 免杀学习篇(1)—— 工具使用
  • 【origin画图】让非等距数值等距显示
  • 前端技术面试
  • git起步
  • linux 内核: 遍历当前所有进程
  • 【科研绘图系列】R语言绘制中国地图和散点图以及柱状图
  • Oracle学习专栏(六):高可用架构
  • 代码随想录八股文训练营总结
  • Ai推理助手易语言开源版
  • 【解决】联想电脑亮度调节
  • SAP学习笔记 - 开发45 - RAP开发 Managed App New Service Definition,Metadata Extension
  • c++图形题练习程序
  • 【工程篇】07:如何打包conda环境并拷贝到另一台服务器上
  • HAProxy双机热备,轻松实现负载均衡
  • 【开源】一款基于 .NET 和 Vue3 开源(Apache)的MES管理系统,您的新一代工厂管理助手!
  • 昆仑通态触摸屏脚本编程通讯设置和调试
  • 【亲测有效】ubuntu20.04服务器新建用户+vnc配置教程
  • Racknerd服务器Ubuntu
  • Ant Design预览多张图
  • AR眼镜颠覆医疗:精准手术零误差
  • HTML--教程
  • K-12教育创业新蓝图:告别“刷题”,拥抱“千人千面”个性化学习
  • 物联网设备管理工具实战:用AR运维镜击穿6.8天修复魔咒
  • Bootstrap-HTML(七)Bootstrap在线图标的引用方法
  • 【zynq7020】PS的“Hello World”
  • RHCE认证-Linux 运维知识整合:从基础到进阶的学习路径
  • ESP32S3+VSCode+PlatformIO+Arduino+Freertos开发入门指南:基于Arduino框架的应用开发全流程
  • 多维视角下的可组合性:PTBs 与 EIP-7702 的对比与解析
  • 简单明了的对比PyTorch与TensorFlow