微服务架构(分布式架构技术)
核心思想将一个单体应用拆分成多个小应用,小应用可以独立部署,小应用可以通过HTTP协议进行调用。小应用按资源和业务处理原则进行分解。
包含服务开发(SpringBoot)和服务管理(SpringCloud)两方面。
优点:
便于系统分工、技术选型
便于分布式部署,提升处理效率
便于系统扩展、维护
缺点:
开发调试复杂(服务间调用、事务完整性)
服务管理复杂
环境运维复杂
Springcloud作用
SpringCloud是针对服务管理推出的一套解决方案。主要包含以下功能模块:
- Eureka服务注册和查找
- 服务间调用RestTemplate\Feign接口
- 使用Ribbon实现服务负载均衡+集群
- Hystrix容错机制,动态智能管理机制,防止服务雪崩
- Zuul网关提供外界访问控制
- 统一配置Config,消息传递Bus
SpringBoot是在Spring基础上的一种封装,SpringBoot主要是用于开发小应用服务,SpringCloud是针对这些服务管理。
Eureka服务注册和查找
Eureka是一个服务注册和查找中心,它是Netflix公司开源组件。 Eureka分为客户端和服务端,服务端有一个服务注册列表,列表会定时更新。
微服务注册
微服务查找调用
搭建eureka服务中心
- 导入spring-cloud-starter-netflix-eureka-server、spring-boot-starter-parent、spring-cloud-dependencies
- 在application.properties配置eureka参数
server.port=3333
#当前项目是否参与注册
eureka.client.registerWithEureka=false
#是否从服务器抓取注册列表信息
eureka.client.fetchRegistry=false
#服务注册和查找的定位URL地址
eureka.client.serviceUrl.defaultZone=http://localhost:3333/eureka
- 定义启动类,使用@SpringBootApplication、@EnableEurekaServer
@SpringBootApplication//启动Boot应用
@EnableEurekaServer//启动Eureka服务端
public class EurekaRunBoot {
public static void main(String[] args) {
SpringApplication.run(EurekaRunBoot.class, args);
}
}
- 定义Eureka服务列表显示格式
默认情况下,客户端使用“机器名:服务名:端口号”信息注册,如果需要使用IP地址,可以通过在EurekaClient端通过下面参数指定
eureka.instance.instance-id=${
spring.cloud.client.ip-address}