微服务架构的设计原则

拆分足够微
轻量级通信
领域驱动原则
单一职责原则

DevOps(开发/运维)及两个披萨

不限于技术栈
微服务模块设计
服务拆分
服务注册
服务发现
服务消费
统一入口
配置管理
熔断机制
自动扩展

微服务拆分的意义

易于实现
易于维护
易于部署
易于更新

微服务拆分的方法

横向拆分:根据业务功能进行拆分。
纵向拆分:对于一个业务功能,根据不同层次进行拆分,如应用层、表现层、数据模型层等。

 

微服务拆分
1.根据服务职责拆分。把一个项目拆成多个服务,也就是多个单体应用
2.定义公用的输入输出。
3.定义公共库。比如说log,config,errors等基础库,还有redis,mongo,mysql等db的连接池初始化和rpc的连接池初始化
4.定义组件之间接口定义。比如说统一API网关,网关内部GRPC调用

location匹配命令

1. “= ”,字面精确匹配, 如果匹配,则跳出匹配过程。(不再进行正则匹配)

2. “^~ ”,最大前缀匹配,如果匹配,则跳出匹配过程。(不再进行正则匹配)

3. 不带任何前缀:最大前缀匹配,举例如下:

location / 代表以”/”开头的搜索匹配, 再没有正则表达式匹配的情况下才进行这个匹配(优先级最低)

4. “~ ”,大小写相关的正则匹配

5. “~* ” , 大小写无关的正则匹配

6. “@”, Named location 不是普通的location匹配,而是用于location内部重定向的变量。

其中: 1、2、3 三种情况属于 location using literal string, 即使用普通字符串的location匹配;

4、5 二种情况属于 location using regular expresstion,即使用正则表达式的location匹配;

 

location = / {
# 只匹配”/”.
[ configuration A ]
}
location / {
# 匹配任何请求,因为所有请求都是以”/”开始
# 但是更长字符匹配或者正则表达式匹配会优先匹配
[ configuration B ]
}
location ^~ /images/ {
# 匹配任何以 /images/ 开始的请求,并停止匹配 其它location
[ configuration C ]
}
location ~* \.(gif|jpg|jpeg)$ {
# 匹配以 gif, jpg, or jpeg结尾的请求.
# 但是所有 /images/ 目录的请求将由 [Configuration C]处理.
[ configuration D ]
}

1) TCP提供面向连接的传输,通信前要先建立连接(三次握手机制); UDP提供无连接的传输,通信前不需要建立连接。
2) TCP提供可靠的传输(有序,无差错,不丢失,不重复); UDP提供不可靠的传输。
3) TCP面向字节流的传输,因此它能将信息分割成组,并在接收端将其重组; UDP是面向数据报的传输,没有分组开销。
4) TCP提供拥塞控制和流量控制机制; UDP不提供拥塞控制和流量控制机制。