当前位置: 首页 > 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://www.lryc.cn/news/589296.html

相关文章:

  • 10+热门 AI Agent 框架深度解析:谁更适合你的项目?
  • Mysql中存储引擎、索引、sql调优、锁、innodb引擎架构、MVCC多版本并发控制总结
  • Linux操作系统从入门到实战(十)Linux开发工具(下)make/Makefile的推导过程与扩展语法
  • next.js 登录认证:使用 github 账号授权登录。
  • 开发者工具在爬虫开发中的应用与面板功能详解
  • 【Keil】C/C++混合编程的简单方法
  • A*算法详解
  • 如何进行 Docker 数据目录迁移
  • 【C++】初识C++(1)
  • UDP和TCP的主要区别是什么
  • ADC采集、缓存
  • Kafka——生产者消息分区机制原理剖析
  • Kafka亿级消息资源组流量掉零故障排查
  • Eplan API SQL
  • 记录一条sql面试题2
  • Kafka 4.0 技术深度解析
  • 4G模块 A7670G打电话并且播报TTS语音
  • 2025-7-15-C++ 学习 排序(4)
  • 项目进度与预算脱节,如何进行同步管理
  • Flex 布局精讲
  • labview生成exe应用程序常见问题
  • RocketMq 启动_源码分析
  • 程序“夯住“的常见原因
  • 高并发四种IO模型的底层原理
  • linux的磁盘满了清理办法
  • Java 大视界 -- Java 大数据机器学习模型在金融风险传染路径分析与防控策略制定中的应用(347)
  • gitee某个分支合并到gitlab目标分支
  • 3D数据:从数据采集到数据表示,再到数据应用
  • pc浏览器页面语音播报功能
  • 【C++】神奇的AVL树