前期总结
- javase:OOP
- mysql:持久化
- html + css + js + jquery + 框架:视图
- javaweb:独立开发MVC三层架构的网站(原始方法)
- ssm:框架简化了我们的开发流程,配置也开始较为复杂
- war:采用war打包方法,在tomcat容器中运行
- spring再简化:SpringBoot-jar,内嵌tomcat;微服务架构
- 服务越来越多:SpringCloud
本阶段学习路线
SpringBoot是什么
- 约定大于配置(出现在:maven、spring、springmvc、springboot)
- 优点:
(1)为所有Spring开发者更快的入门
(2)开箱即用,提供各种默认配置来简化项目配置
(3)内嵌式容器简化Web项目
(4)没有冗余代码生成和XML配置的要求
微服务
-
概念
微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用必须构建成一系列小服务的组合;可以通过http的方式进行互通。 -
单体应用架构
所谓单体应用架构(all in one)是指,我们将一个应用中的所有应用服务都封装在一个应用中。
优点:
(1)易于开发和测试,部署方便,当需要扩展时,只需要将war复制多份,然后放到多个服务器上,再做个负载均衡就可以了。
缺点:
(1)如果只要修改一个非常小的地方,都需要将整个服务停掉,重新打包、部署这个应用的war包,对于比较大的应用,开发和维护都存在问题。(扩展需要整个应用程序的扩展,而不能进行部分扩展。) -
微服务架构
把应用程序构建为一套服务,服务可以独立部署和扩展,每个服务提供了一个坚实的模块边界,甚至不同的服务可以用不同的编程语言编写,被不同的团队管理。 -
特性
组件化与服务
组件(component)是一个可独立替换和升级的软件单元。微服务架构(Microservice architectures)会使用库(libraries),但组件化软件的主要方式是把它拆分成服务。我们把库(libraries)定义为组件,这些组件被链接到程序,并通过内存中函数调用(in-memory function calls)来调用,而服务(services )是进程外组件(out-of-process components),他们利用某个机制通信,比如 WebService 请求,或远程过程调用(remote procedure call)。
强化终端及弱化通道
当构建不同的进程间通信机制的时候,我们发现有许多的产品和方法能够把更加有效方法强加入的通信机制中。比如企业服务总线(ESB),这样的产品提供更有效的方式改进通信过程中的路由、编码、传输、以及业务处理规则。
微服务倾向于做如下的选择:强化终端及弱化通道。微服务的应用致力松耦合和高内聚:采用单独的业务逻辑,表现的更像经典Unix意义上的过滤器一样,接受请求、处理业务逻辑、返回响应。它们更喜欢简单的REST风格,而不是复杂的协议,如WS或者BPEL或者集中式框架。
有两种协议最经常被使用到:包含资源API的HTTP的请求-响应和轻量级消息通信协议。
分散治理
分散数据管理
基础设施自动化
容错性设计
- 微服务原文地址
原文地址:http://martinflower.com/articles/microservices.html
翻译:https://www.cnblogs.com/liuning8023/p/4493156.html - 架构对比图
微服务构建思路
- 构建一个个功能独立的微服务应用单元,可以使用springboot,可以帮我们快速构建一个应用;
- 大型分布式网络服务的调用,这部分由springcloud来完成,实现分布式;
- 在分布式中间,进行流式数据计算、批处理,我们有spring cloud data flow;
- spring为我们想清楚了整个从开始构建应用到大型分布式应用全流程方案。