1、服务架构的演进史
单一应用架构
优点:
- 系统间相互独立,会有很多重复开发工作,影响开发效率
缺点:
- 代码耦合,开发维护困难
- 无法针对不同模块进行针对性优化
- 无法水平扩展
- 单点容错率低,并发能力差
垂直应用架构
优点:
- 系统拆分实现了流量分担,解决了并发问题
- 可以针对不同模块进行优化
- 方便水平扩展,负载均衡,容错率提高
缺点:
- 系统间相互独立,会有很多重复开发工作,影响开发效率
分布式服务架构
优点:
- 将基础服务进行了抽取,系统间相互调用,提高了代码复用和开发效率
缺点:
- 系统间耦合度变高,调用关系错综复杂,难以维护
2、Dubbo架构
节点角色说明
节点 | 角色说明 |
---|---|
Provider | 暴露服务的服务提供方 |
Consumer | 调用远程服务的服务消费方 |
Registry | 服务注册与发现的注册中心 |
Monitor | 统计服务的调用次数和调用时间的监控中心 |
Container | 服务运行容器 |
3、微服务架构
微服务的优点:
- 易于开发和维护
- 单个微服务启动较快
- 局部修改容易部署
- 技术栈不受限
- 按需伸缩
微服务架构缺点
- 运维要求高
- 分布式的复杂性
- 接口调整成本高
4、SpringCloud及核心组件介绍
SpringCloud核心组件
- 服务注册中心:Eureka和Consul介绍
- 服务间调用:Ribbon和Feign介绍
- 断路器:Hrytrix
- 服务网关:(zuul/gateway)
- 配置中心:Config
5、Eureka服务注册中心搭建
创建Maven父项目,继承spring-boot-starter-parent
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
父项目依赖管理:添加SpringCloud依赖管理
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR3</spring-cloud.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
子项目中,依赖服务注册中心组件Eureka。
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
#服务名称
spring.application.name=eureka-server
#端口号
server.port=92
eureka.instance.hostname=localhost
#服务注册中心的配置内容,指定服务注册中心的位置
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}/${server.port}/eureka/
#是否检索服务
eureka.client.fetch-registry=false
#是否向服务注册中心注册自己
eureka.client.register-with-eureka=false
创建启动类
@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
访问服务注册中心: