1、什么是微服务
- 微服务是一种架构风格
- 一个应用拆分为一组小型服务
- 每个服务运行在自己的进程内,也就是可独立部署和升级
- 服务之间使用轻量级HTTP交互
- 服务围绕业务功能拆分
- 可以由全自动部署机制独立部署
- 去中心化,服务自治。服务可以使用不同的语言、不同的存储技术
1.2 与SOA的区别
- SOA关注的是服务的重用性及解决信息孤岛问题。
- 微服务关注的是解耦,虽然解耦和可重用性从特定的⻆度来看是⼀样的,但本质上是有区别的,解耦是降低业务之间的耦合度,而重用性关注的是服务的复用。
- 微服务会更多地关注在DevOps的持续交付上,因为服务粒度细化之后使得开发运维变得更加重要,因此微服务与容器化技术的结合更加紧密。
1.3 微服务框架功能
- ·注册中心:服务提供者和消费者,能够从注册中心注册和得到服务信息。配置中心在微服务架构中设计服务较多需要对于配置文件统一管理。
- ·服务链路追踪︰对于服务之间的负载调用,要能通过链路追踪,得到具体参与者,调用链路出现问题能够快速定位。
- ·负载均衡:服务调用服务会采用一定的负载均衡策略,来保证服务的高可用。
- ·服务容错∶通过熔断、降级服务容错策略,对系统进行有效的保护,降级是在服务或依赖的服务异常时,返回保底数据,熔断是指依赖服务多次失效,则熔断器打开,不再尝试调用,直接返回降级信息。熔断后,定期探测依赖服务可用性,若恢复则恢复调用。
- 服务网关︰用户请求过载时进行限流、排队、过载保护、黑白名单、异常用户过滤拦截等都可以通过服务网关实现。
- ·服务发布与回滚︰蓝绿部署、灰度、AB Test等发布策略,可快速回滚应用。
- ·服务动态伸缩、容器化︰根据服务负载情况,可快速手动或自动进行节点增加和减少。
2、Eureka--服务注册和发现
注册中心可以说是微服务架构中的“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
Eureka主要涉及到三大⻆色:
- Eureka Server:提供服务的注册与发现
- Service Provider:服务生产方,将自身服务注册到Eureka中,从而使服务消费方能狗找到
- Service Consumer:服务消费方,从Eureka中获取注册服务列表,从而找到消费服务
1、 构建Eureka Server时要记得在启动类上加上注解@EnableEurekaServer
2、构建Eureka Client
1)导入Eureca依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
2)application中新增Eureca配置
# Eureka配置:配置服务注册中心地址
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka
3)在启动类上加上注解@EnableEurekaClient :开启Eureka客户端注解,在服务启动后自动向注册中心注册服务
3. EureKa自我保护机制
默认情况下,当eureka server在一定时间内没有收到实例的心跳,便会把该实例从注册表中删除(默认是90秒)。该保护机制的目的是避免网络连接故障,在发生网络故障时,微服务和注册中心之间无法正常通信,但服务本身是健康的,不应该注销该服务。自我保护模式可以让集群更加健壮。
3、LoadBalancer负载均衡
负载均衡是指将负载分摊到多个执个单元上,常⻅的负载均衡有两种方式。一种独立进程单元,通 过负载均衡策略,将请求转发到不同的执行单元上,例如Nginx。另一种是将负载均衡逻辑以代码的形 式封装到服务消费者的客户端上,服务消费者客户端维护了一份服务提供者的信息列表,有了信息表, 通过负载均衡策略将请求分摊给多个服务提供者,从而达到负载均衡的目的。
在产生RestTemplate实例时,使用@LoadBalanced注解,开启负载均衡。
@Bean
@LoadBalanced
public RestTemplate restTemplate() {
return new RestTemplate();
}
![](https://i-blog.csdnimg.cn/blog_migrate/aa51cba41327141264896c64d98dd3f1.png)