微服务-基础

更多内容请关注:

Java快速开发学习

锁清秋

传统的开发模式

单体式开发(Monolithic)

既所有的功能打包在一个 WAR 包里,基本没有外部依赖(除了容器),部署在一个 JavaEE 容器(Tomcat,JBoss,WebLogic)里,包含了 DO/DAO,Service,UI 等所有逻辑。

单体式开发(Monolithic)

优点

  • 开发简单,集中式管理
  • 基本不会重复开发
  • 功能都在本地,没有分布式的管理和调用消耗

缺点

  • 效率低:开发都在同一个项目改代码,相互等待,冲突不断
  • 维护难:代码功功能耦合在一起,新人不知道何从下手
  • 不灵活:构建时间长,任何小修改都要重构整个项目,耗时
  • 稳定性差:一个微小的问题,都可能导致整个应用挂掉
  • 扩展性不够:无法满足高并发下的业务需求

微服务架构

目的:有效的拆分应用,实现敏捷开发和部署

微服务架构

微服务特征

官方标准定义

  • 一系列的独立的服务共同组成系统
  • 单独部署,跑在自己的进程中
  • 每个服务为独立的业务开发
  • 分布式管理
  • 非常强调隔离性

标准

  • 分布式服务组成的系统
  • 按照业务,而不是技术来划分组织
  • 做有生命的产品而不是项目
  • 强服务个体和弱通信( Smart endpoints and dumb pipes )
  • 自动化运维( DevOps )
  • 高度容错性
  • 快速演化和迭代

SOA(Service-Oriented Architecture:面向服务的架构)架构与微服务架构的区别

微服务与 SOA 有很多相同之处。两者都属于典型的、包含松耦合分布式组件的系统结构。在围绕着服务的概念创建架构这一方面,微服务提供了一种更清晰、定义更良好的方式。微服务的原则与敏捷软件开发思想是高度一致的,而它与 SOA 原则的演化的目标也是相同的,则减少传统的企业服务总线开发的高复杂性。两者之间最关键的区别在于,微服务专注于以自治的方式产生价值。但是两种架构背后的意图是不同的:SOA 尝试将应用集成,一般采用中央管理模式来确保各应用能够交互运作。微服务尝试部署新功能,快速有效地扩展开发团队。它着重于分散管理、代码再利用与自动化执行。

功能 SOA 微服务
组件大小 大块业务逻辑 单独任务或小块业务逻辑
耦合 通常松耦合 总是松耦合
公司架构 任何类型 小型、专注于功能交叉的团队
管理 着重中央管理 着重分散管理
目标 确保应用能够交互操作 执行新功能,快速拓展开发团队

文章作者: 张文军
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 张文军 !
评论