1:集中式架构:就是把所有的功能,模块都集中到一个项目中,部署在一台服务器上,从而对外提供服务(单体架构,单体应用,单体服务),就是只有一个项目 只有一个war
2:分布式架构:就是把所有的功能,模块拆分成不同的子项目中,部署在多台不同的服务器上,这些子项目相互协作、相互调用对外提供服务。
3:微服务架构:分布式架构 强调系统拆分,微服务也是强调系统拆分,微服务属于分布式架构的范畴,现在对微服务并没有一个准确的定义,马丁福勒老爷子
通过http的RestFul ApI进行通信协作,(dubbo-》dubbo协议) 简单来说就是controller 调用controller
4:由于各个服务之间通过http的json作为数据通信的基础,因此这些微服务可以使用不同的语言进行开发。
5:服务注册:将服务器所在主机、端口、版本号、通信协议等信息登记到注册中心中
6:服务发现:服务消费者向注册中心请求已经等级的服务列表,然后得到某个服务的主机,端口、版本号、通信协议等信息,从而实现对服务的调用。
7:eureka采用c/s架构,由服务端和客户端构成。
8:restTemplate 不加 @LoadBalanced 时 显示 不能识别 01-SPRINGCLOUD-SERVICE-GOODS 没有引入ribbon。通过注解引入 ribbon
9:eureka和zookeeper的比较
(1)CAP理论:CAP原则又称CAP定理,指的是在一个分布式系统中,一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)。CAP 原则指的是,这三个要素最多只能同时实现两点,不可能三者兼顾。
(2)因为分区P分区容错性在分布式系统必须要保证。因此eureka保证的是AP 高可用 。 zookeeper保证的是CP,一主多从,如果主节点宕机,需要经过选举产生新的主节点,在选举期间不能使用,类似redis的哨兵模式。
(3)eureka各个节点都是平等的 一个节点断开不影响其它节点的使用,数据一致性不能保证,同步不及时。
(4)分区容错性是指系统能够容忍节点之间的网络通信的故障。
10:在父项目中添加子项目
<!--聚合各个子项目-->
<modules><module>../01-springcloud-server-eureka</module><module>../01-springcloud-service-common</module><module>../01-springcloud-service-goods</module><module>../01-springcloud-service-portal</module>
</modules>
11:在打包过程中报错了 解决方法 在子项目中继承父项目时添加 relativPath 标签中添加父项目的pom的相对路径
<!--集成springboot的父项目-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.1.9.RELEASE</version><relativePath>../01-springcloud-service-parent/pom.xml</relativePath>
</parent>
12:自我保护机制:Eureka 的自我保护模式是有意义的,该模式被激活后,它不会从注册列表中剔除因长时间没收到心跳导致租期过期的服务,而是等待修复,直到心跳恢复正常之后,它自动退出自我保护模式。这种模式旨在避免因网络分区故障导致服务不可用的问题。例如,两个客户端实例 C1 和 C2 的连通性是良好的,但是由于网络故障,C2 未能及时向 Eureka 发送心跳续约,这时候 Eureka 不能简单的将 C2 从注册表中剔除。因为如果剔除了,C1 就无法从 Eureka 服务器中获取 C2 注册的服务,但是这时候 C2 服务是可用的。
13:ribbon: Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。
硬件负载均衡:比如 F5 深信服,Array等
软件负载均衡:比如 Nginx LVS 和HAproxy等,
ribbon是Netflix公司发布的开源项目(组件,框架,jar包)主要功能是提供客户端的软件负载均衡算法,它会从eureka中获取一个可用的服务端清单,通过心跳检测来剔除故障的服务端节点以保证清单中都是可以访问的服务端节点。
在RestTemplate中添加@LoadBalanced
14:openfeign:集成jar包
<!--集成openfeign-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
准备方法
调用
15:hystrix:默认超时时间是1s
<!--引入hystrix的起步依赖-->
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-hystrix</artifactId><version>2.1.3.RELEASE</version>
</dependency>