SpringCould介绍及服务拆分

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缓存,单独的基础服务,让你服务的微服务。

你可能感兴趣的:(SpringCould介绍及服务拆分)