分布式,微服务的概念
微服务主要是面对现在技术发展后,业务复杂度提升、用户量激增,单体项目很难再在这种高并发的场景下发挥作用。且业务的复杂度的提升,代码量几何倍数增长,在一个系统,一个项目下放置所有代码,对于代码的维护与解耦,都是很大的挑战。所以我们使用微服务的架构,将一个大的项目,拆分成多个独立的的系统,使用网络通信来让他们相互协调与合作,达到形如一个系统的效果。
当然,微服务架构在解决问题的同时,也会出现很多单体项目下不会出现的新的挑战,在开发模式、使用的技术上,都会有很大的不同,并且在面对网络通信不稳定的情况下,又会有新的复杂性出现。
下面我们来看看分布式系统常用的工具
Spring-Cloud:Spring Cloud为开发人员提供工具,以快速构建分布式系统中的一些常见模式 (例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性令牌、全局锁、领导选举、分布式会话、集群状态)。分布式系统的协调存在一些通用的模式,使用Spring Cloud开发人员可以快速支持实现这些模式的服务和应用程序。它们将在任何分布式环境中运行良好,包括开发人员自己的笔记本电脑、裸机数据中心以及云铸造等托管平台。
Spring-cloud下面有很多实用的工具,包括Spring-Cloud官方的gateway 、loadbalancer 、openfeign 等;阿里的nacos、dubbo、sentinel等;netflix的ribbon、hyxtrix等。
我们这里的项目,采用nacos作为服务发现、配置管理的选项,sentinel-服务容错,seata-分布式事务、gateway-服务网关、openfeign-服务调用、ribbon-负载均衡;
服务发现:
每个服务因为是相对独立的系统,他们直接需要通信只有通过网络,服务发现就是找到服务实例的地址的过程,我们这里使用nacos;
1.导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.修改配置
spring:
application:
name: website
cloud:
nacos:
config:
server-addr: localhost:8848
3.添加注解
@EnableDiscoveryClient
4.启动服务器
Nacos 快速开始 下载服务器并启动。
服务发现的过程: