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

Docker核心技术:应用架构演进

云原生学习路线导航页(持续更新中)

本文是 Docker核心技术 系列文章:应用架构演进,其他文章快捷链接如下:

  • 应用架构演进(本文)
  • 容器技术要解决哪些问题
  • Docker的基本使用
  • Docker是如何实现的

1.1.架构演进过程

在这里插入图片描述
  • 单体架构

    • 一个非常大的项目,如果是单体,经过长时间演进之后,没人知道哪一个模块是干什么的,哪个模块是谁负责的 。变更将会特别困难,没人敢做更改。
  • SOA架构

    • 随着业务的复杂,架构在演进,IBM后来推进了 SOA 架构模式
    • SOA(Service-Oriented Architecture,面向服务的架构),快速了解可以看https://bbs.huaweicloud.com/blogs/315752
    • 所有服务之间使用ESB(Enterprise Service Bus,企业服务总线)相互调用
    • 缺点:长期以往,ESB又变成了一个大的单体服务了 ,ESB的升级和变更也变得不可维护。因此SOA后来也凉掉了
  • 微服务架构

    • 微服务架构可以理解为 SOA 的最佳实现,基于轻量级的网络调用,比如REST API
    • 强调把服务打散,服务粒度要比SOA更小,一个团队负责一个或几个服务。这样就有人为一个服务的完整生命周期负责了
    • 面临的挑战:
      • 有大量的网络调用
      • 每个服务很小,用的资源也很少,因此一台物理机肯定会部署很多个服务,提升资源利用率。不过在一台机器上,进程间隔离性差,容易互相影响
    • 虚拟化技术的出现
      • 后来,将一台物理机划分为多个虚拟机,每个服务部署在一台虚拟机里,解决了隔离性问题

1.2.传统分层架构 和 微服务架构对比

  • 分层架构
    • 优点
      • 部署测试很简单,因为只有一份代码,构建出来也只有一个进程
      • 横向扩展容易,多来几台机器就可以,部署同样的代码就行
    • 缺点
      • 程序太大了,部署、启动很慢,任何变更都需要完整的重新部署
  • 微服务架构
    • 优点
      • 适合复杂架构,拆分原则:高内聚低耦合
      • 微服务体量小,启动速度快
      • 各个功能之间边界更清晰,可以调整公司组织架构,配合应用的结构,让具体的人为具体的功能负责
    • 缺点
      • 带来复杂性
        在这里插入图片描述

1.3.微服务改造的原则

在这里插入图片描述

1.4.微服务之间的通讯:点对点、API网关

在这里插入图片描述

  • 比如:kubernetes的api-server就是它的网关

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 服务攻防-应用协议cve
  • Thinkphp开发文档二次整理版
  • 子查询
  • Langchain 对pdf,word,txt等不同文件的加载解析
  • C语言-栈和队列
  • springboot 配置 spring data redis
  • spring-boot 整合 redisson 实现延时队列(文末有彩蛋)
  • TiDB实践—索引加速+分布式执行框架创建索引提升70+倍
  • SpringBoot RestHighLevelClient 按版本更新
  • 自动驾驶AVM环视算法–全景和标定全功能算法实现和exe测试demo
  • vscode配置latex环境制作【文档、简历、resume】
  • Chapter16 渲染优化技术——Shader入门精要学习笔记
  • 企业培训 | CATIA数字样机培训
  • 为什么Spring不推荐@Autowired用于字段注入
  • Facebook Dating:社交平台的约会新体验
  • Android Studio:GIT提交项目到远程仓库
  • export和import的用法总结
  • laravel with 查询列表限制条数
  • Linux中的硬链接与软链接
  • PHP那些事儿
  • Redis的resp协议
  • Solarized Scheme
  • 猴子数据域名防封接口降低小说被封的风险
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 计算机常识 - 收藏集 - 掘金
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 听说你叫Java(二)–Servlet请求
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • nb
  • 06-01 点餐小程序前台界面搭建
  • ​数据结构之初始二叉树(3)
  • ​一些不规范的GTID使用场景
  • # 移动硬盘误操作制作为启动盘数据恢复问题
  • #define 用法
  • #mysql 8.0 踩坑日记
  • #NOIP 2014# day.2 T2 寻找道路
  • #stm32驱动外设模块总结w5500模块
  • #window11设置系统变量#
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (Forward) Music Player: From UI Proposal to Code
  • (libusb) usb口自动刷新
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (补)B+树一些思想
  • (代码示例)使用setTimeout来延迟加载JS脚本文件
  • (过滤器)Filter和(监听器)listener
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (力扣题库)跳跃游戏II(c++)
  • (三)c52学习之旅-点亮LED灯
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (自适应手机端)响应式服装服饰外贸企业网站模板
  • .360、.halo勒索病毒的最新威胁:如何恢复您的数据?
  • .Net 8.0 新的变化
  • .NET程序员迈向卓越的必由之路