【微服务架构设计实施】第一部分:架构篇-1:微服务架构与Spring Cloud介绍
〇、概述
一、微服务架构与Spring Cloud
(一)概念
不同说法:细粒度的、清凉组件化的小型SOA(面向服务架构)
统一说法:小型应用程序(服务组件),使用轻量级设计方法和HTTP协议通信
理想说法:可以不同语言编写,完全独立自治
(二)定义
广义:复杂系统组件化拆分,轻量通信方式整合,得到拆分的独立组件化小应用
组件:代码库&函数式调用
微服务组件:应用&HTTP通信提供接口服务
精髓:分而治之(复杂系统拆分)、合而用之(轻量方式整合【多实例、多服务、多副本整合,分布式资源和低廉机器组成强大服务系统】)
HTTP通信:通过服务注册与发现,使用服务实例名调用【通过负载均衡器从服务注册列表选用可用的服务实例,再通过实例注册的ip+端口路由到相关的服务】,而非ip+端口【优点:基于api的微服务,可以在任意主机发布,随时更改主机端口,发布任意个副本】
特点:小型化(每个组件变小&专注)、自治化(解耦&服务迭代降低影响)、扁平化(有序可控、杂而不乱、发挥更大优势)、轻量级设计(api同步通信-REST协议、消息异步通信-轻量消息总线)、渐进式设计(业务驱动、快速迭代 不断调整、使产品趋于成熟)
(三)微服务架构与整体式架构的区别
整体式架构:笨重、难以更新(牵一发动全身)、稳定性欠缺(整个崩溃)、不方便持续开发(难以适应需求变更、快速迭代敏捷开发,成为业务发展绊脚石)
微服务架构:复杂事情简单化、快速更新迭代、高可用(并发、高流量访问、规模化发展)
结构图:整体式六边形(不同适配器)




微服务架构

参考:https://www.sohu.com/a/439667700_715776
(四)微服务架构与SOA的比较
SOA:粗粒度&松耦合的面向服务架构设计方法,使用企业服务总线ESB构建信息系统【工具:Dubbo/Dubbox】

SOA本质:业务访问基础服务
区别:微服务轻量级(HTTP协议,通过restful实现),SOA重量级(复杂协议,如WebService)
微服务优势:高可用、伸缩性、负载均衡、故障转移,通过微服务治理(三维结构),提供无限可扩展空间

(五)为什么要使用微服务架构
开发简单
快速响应需求变化
随时随地更新
系统稳定可靠
规模持续扩展
(六)为实施微服务架构做好准备
观念转换:做项目改为做产品(不断迭代),构建生态体系
团队管理方式转变:围绕业务功能分配
自动化基础设施建设:CICD+docker实施交付
(七)为什么使用Spring Cloud
Netflix OSS开源组件
Spring Cloud开发套件:

阿里巴巴实现了标准,并整合多个组件

左边是Spring Cloud自己写了接口和实现类
右边是各个厂商写的实现类(实现Spring Cloud的标准)
(八)Spring Cloud组件说明




(九)Spring Cloud的版本说明


二、微服务架构最佳设计
(一)合理划分微服务
(二)微服务治理
(三)Rest API微服务设计
(四)Web UI微服务设计
(五)微服务之间调用规则设计
(六)数据最终一致性设计
(七)分布式集群架构设计
(八)微服务运行环境安全设计
三、电商平台微服务设计实例
(一)电商平台总体设计
(二)电商平台业务模型设计
(三)创建Rest API微服务
(四)创建Web UI微服务
(五)电商平台微服务体系结构
【微服务架构设计实施】第一部分:架构篇-1:微服务架构与Spring Cloud介绍的更多相关文章
- 微服务架构之spring cloud 介绍
在当前的软件开发行业中,尤其是互联网,微服务是非常炽热的一个词语,市面上已经有一些成型的微服务框架来帮助开发者简化开发工作量,但spring cloud 绝对占有一席之地,不管你是否为java开发,大 ...
- [转帖]微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务 http://skaka.me/blog/2016/04/21/springcloud1/ APR 21ST, ...
- 微服务框架Spring Cloud介绍 Part1: 使用事件和消息队列实现分布式事务
http://skaka.me/blog/2016/04/21/springcloud1/ 不同于单一架构应用(Monolith), 分布式环境下, 进行事务操作将变得困难, 因为分布式环境通常会有多 ...
- [第十八篇]——Docker 安装 Node.js之Spring Cloud大型企业分布式微服务云架构源码
Docker 安装 Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,是一个让 JavaScript 运行在服务端的开发平台. 1.查看可用的 N ...
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第3章Spark架构设计与编程模型第3节:Spark架构设计(2)
三,深入RDD RDD本身是一个抽象类,具有很多具体的实现子类: RDD都会基于Partition进行计算: 默认的Partitioner如下所示: 其中HashPartitioner的文档说明如下: ...
- 【第一篇】- Maven 系列教程之Spring Cloud直播商城 b2b2c电子商务技术总结
Maven 教程 Maven 翻译为"专家"."内行",是 Apache 下的一个纯 Java 开发的开源项目.基于项目对象模型(缩写:POM)概念,Maven ...
- Atitit.架构设计趋势 设计模式 ---微服务架构 soa
Atitit.架构设计趋势 设计模式 ---微服务架构 soa 什么是微服务架构?1 .微服务与SOA的关系 :微服务架架构师面向服务架构(SOA)的一种特定实现1 微服务与康威定律2 微服务的一些 ...
- 微服务架构-选择Spring Cloud,放弃Dubbo
Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经走了一年多. 在使用 Spring Cloud 之前,我们对微服务实践是没有太多的体会和经验的.从 ...
- 微服务架构集大成者—Spring Cloud (转载)
软件是有生命的,你做出来的架构决定了这个软件它这一生是坎坷还是幸福. 本文不是讲解如何使用Spring Cloud的教程,而是探讨Spring Cloud是什么,以及它诞生的背景和意义. 1 背景 2 ...
- 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结
http://developer.51cto.com/art/201710/554633.htm Spring Cloud 在国内中小型公司能用起来吗?从 2016 年初一直到现在,我们在这条路上已经 ...
随机推荐
- ProxySQL 审计
1.审计日志 ProxySQL 2.0.5 引入了审计日志.此功能允许跟踪某些连接活动.要启用此功能,需要配置变量 mysql-auditlog_filename,也就是审计日志的文件名.此变量的默认 ...
- MySQL数据库中配置文件 read_only 参数的有关说明
1.对于MySQL单实例数据库和master库,如果需要设置为只读状态,需要进行如下操作和设置: 将MySQL设置为只读状态的命令(可以登录mysql执行下面命令, 或者在my.cnf配置文件中添加& ...
- 不给字段创建索引,字段不存放在source中,字段无法聚合查询等
某个字段不被搜索,也就是说不想为这个字段建立inverted index(反向索引),可以这么做: PUT twitter { "mappings": { "uid&qu ...
- 使用Portainer管理其他主机的docker应用有两种方式
官方文档地址:https://docs.portainer.io/v/ce-2.9/admin/environments/add/docker 第一种方式 是在其他主机的docker 启动中放开237 ...
- windows系统下使用bat脚本文件设置 JDK 系统环境变量
号开头的行不要写在bat文件中 # java_init.bat # 注意文件换行符是windows系统下的(CR LF),文件编码是ANSI # path变量追加这个可以拓展到tomcat,mysql ...
- SECS半导体设备通讯-3 SECS-II通信标准
一 SECS-II 概述 SECS-II 标准定义了使用如SECS-I.HSMS等传输协议在设备和主机之间交换的消息的形式和含义. 定义了以消息的形式在设备和主机之间传递信息,消息按其行为分类,称为S ...
- Go_Goroutine详解
Goroutine详解 goroutine的概念类似于线程,但 goroutine是由Go的运行时(runtime)调度和管理的.Go程序会智能地将 goroutine 中的任务合理地分配给每个CPU ...
- vivo互联网机器学习平台的建设与实践
vivo 互联网产品团队 - Wang xiao 随着广告和内容等推荐场景的扩展,算法模型也在不断演进迭代中.业务的不断增长,模型的训练.产出迫切需要进行平台化管理.vivo互联网机器学习平台主要业务 ...
- 浅谈MySQL、Hadoop、BigTable、Clickhouse数据读写机制
个人理解,欢迎指正 数据库 引擎 写数据 读数据 补充 MySql InnoDB:支持事务,高速读写性能一般 Myisam:不支持事务,高速读写性能好 以InnoDB更新一条记录为例 1.B+Tree ...
- 4.MongoDB系列之索引(一)
1. 执行计划查看 db.getCollection('users').find({'username': 'shenjian'}).explain('executionStats') 结果查看,先大 ...