SpringCloud 是什么?
Spring cloud 是一个开发工具集,包含多个子项目。
简化了分布式服务。最为重要的就是美国Netflix开源组件。
Spring Eureka(Eureka n 找到了,有了)
基于Netflix Eureka 进行了二次封装
主要由两个组件构成:
Eureka Server 注册中心
供服务器用来注册的服务器。
Eureka Client 服务注册
用来简化于服务器的交互,作为轮询负载均衡器并提供服务的故障切换支持。
客户端通过 Eureka Client 连接服务器,并维持心跳连接,兼容微服务是否正常运行。
mvn clean package
Maven 命令进行打包
java -jar 文件名.jar
启动jar服务
nohup java -jar target/eureka-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 &
后台启动 留下进程id
Eureka 总结
@EnableEurekaServer 开启
@EnableEurekaClient 开启
心跳检测、健康检查、负载均衡等功能
Eureka的高可用,生产建议至少两台以上
分布式系统中,服务注册中心是最重要的基础部分,随时处在提供服务的状态。
服务注册中心地位
客户端发现
Eureka
优点:简单直接,知道所有可用服务的实际地址
缺点:A服务需要自己实现一套逻辑把A服务挑出来
服务端发现(代理)
Nginx(HTTP反向代理服务器、负载均衡器、服务发现的负载均衡器)
Zookeeper
Kubernetes(通过集群中的每一个节点,都运行一个代理来实现服务发现的功能。代理的角色就是ServerSet、Discover,客户端通过主机的ip地址和端口,向代理发送请求。
代理将请求转发到集群里边任何一个可用的服务上)
优点:由于代理的介入,B对A是透明不可见的。A服务向代理发送请求
微服务的特点:异构
不同的语言
不同类型的数据库
理解分布式、架构特点、原理更重要。
微服务服务拆分
起点和终点
起点:既有的架构形式
终点:好的架构不是设计出来的,而是进化而来的(持续演进)
ESB:企业服务总线
坚持的原则
业务不适合上微服务场景:
系统中包含很多很多强事务场景
业务相对稳定、迭代周期长
访问压力不大、可用性要求不高
康威定律:
核心观点:任何组织在设计一套系统(广益概念上的系统)是,所交付的设计方案在结构上都与该组织的沟通保持一致。
人话:沟通的问题会影响系统的设计。
拆分实战
功能:单一职责,松耦合、高内聚
关注点分离:按职责、按通用性、按粒度级别
服务和数据关系:
先考虑业务功能,在考虑数据
无状态服务
短信服务,消息系统,redis缓存,单独的基础服务,让你服务的微服务。