微服务架构

1.单体式架构&微服务架构

单体式架构
概念:项目源码合归一处
缺点:
项目迭代不灵活
项目组职责、权限不清
项目并发配置不灵活
项目部署扩展困难

微服务架构
概念:将项目拆分几个独立的功能单元(服务)的架构
优点:
项目复杂度降低
团队界限明确
部署灵活

2.微服务架构-常见微服务框架

Dubbo/Dubbox

dubbo微服务和spring cloud dubbo与微服务的区别_springcloud

阿里巴巴开发、当当改良
基于RPC

Spring Cloud

dubbo微服务和spring cloud dubbo与微服务的区别_分布式_02

Spring 团队开发
基于RESTful

3.微服务架构-服务类型

Provider

提供者,提供服务的一方

Consumer

消费者,调用服务的一方

dubbo微服务和spring cloud dubbo与微服务的区别_分布式_03


4.微服务架构-通信方式

RPC

Remote Procedure Call

支持RPC的微服务框架:Dubbo/Dubbox

基于TCP、平台有关。

RESTful
Representational State Transfer
支持RESTful的微服务框架:Spring Cloud/Dubbox
基于HTTP、平台无关。

TCP:传输控制协议(Transmission Control Protocol)

tcp协议属于传输层协议(UDP也属于传输层协议,但是UDP协议是无状态的)。建立一个TCP连接需要三次握手,断开一个TCP连接需要四次挥手。
UDP:Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

http协议,简称超文本传输协议(Hypertext Transfer Protocol),是web应用程序的基础,也是手机联网常用的协议之一。http协议在tcp协议上面,属于应用层协议。
http协议最显著的特点就是:客户端发送的每次请求,都需要服务端返回响应。

HTTP和TCP的联系
HTTP和TCP的联系,是HTTP(要结婚的消息)使用TCP(电话)提供的“传输能力”。除此之外,没了。
把上文层次的概念,放到计算机网络中,就是协议栈。协议栈的每一层,都专注于自己层的事情:HTTP专注于要传输的信息(HTTP是信息的载体,所以在协议里面会标注信息长度,信息类型等),TCP专注于传输的可靠(为了可靠传输,TCP会给自己层的包标注大小和顺序,并且有确认机制),IP负责因特网传输(IP也有自己的格式,自己查吧),再下面的层负责与局域网和硬件打交道。

5.微服务架构-设计原则
单一职责
围绕业务切分
谁创建谁负责

分布式和集群

1.分布式:关注项目拆分

dubbo微服务和spring cloud dubbo与微服务的区别_TCP_04


什么是分布式系统

拿一个最简单的例子,就比如说我们的图书管理系统。之前的系统包含了所有的功能,比如用户注册登录、管理员功能、图书借阅管理等。这叫做集中式系统。也就是一个人干了好几件事。

后来随着功能的增多,用户量也越来越大。集中式系统维护太麻烦,拓展性也不好。于是就考虑着把这些功能分开。通俗的理解就是原本需要一个人干的事,现在分给n个人干,各自干各自的,最终取得和一个人干的效果一样。

稍微正规一点的定义就是:一个业务分拆多个子业务,部署在不同的服务器上。 然后通过一定的通信协议,能够让这些子业务之间相互通信。

2.集群:关注项目部署

dubbo微服务和spring cloud dubbo与微服务的区别_springcloud_05

springcloud版本以伦敦地铁站名称命名,后改为以日期命名。
详情参考:https://spring.io/projects/spring-cloud

总结
dubbo:Url rpc 长连接 。
springcloud: http 短连接 报文头比较大 对网络质量要求比较高。

长连接和短连接的区别:
http占用的报文头大,所以对网络要求高。