1.说明
微服务:顾名思义,微服务就是将大型的项目进行拆分,拆分成一个个微服务,各个服务是独立的,相互配合,然后对这些服务进行调度管理。
关于注册中心:将服务和它实例的ip和端口配置到注册中心,这里的注册中心相当于一个管理微服务实例地址的平台。
在安装配置好nacos或者eureka后,在浏览器输入相应的地址,可以看到类似这样的一个界面
当然你需要在自己的项目中导入依赖并在yml文件中配置具体的信息才能被注册到这个界面里,简单点来说,就是配置一下,他就可以把你的地址信心放到注册中心进行管理了。
服务之间的调用:这里涉及到服务的分级存储模型,服务-->集群--->实例,同一集群下也可以配置环境隔离。微服务实例之间的相互调用遵循负载均衡策略,即在多个相同实例下选择最优的策略。
2.注册中心
常见的注册中心有两种,分别是Nacos和Eureka,他们的使用方法基本一致。Nacos的管理界面是中文的,他是阿里巴巴进行开发的国内的注册中心;Eureka的界面是英文的,是SpringCloud官方的。我个人喜欢中文界面的Nacos。
1.导入依赖
(1)Eureka
eureka客户端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
Eureka服务端依赖:
eureka服务端依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
yml文件配置信息,声明该服务是Eureka的服务端依赖 :
server:
port: 10086
spring:
application:
name: eureka-server
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:10086/eureka
关于客户端和服务端,可以简单理解为客户端就是我们的微服务项目,服务端就是注册中心,也就是那个管理服务信息的网站。nacos的服务端是需要下载安装到本地的,所以没有服务端依赖;而Eureka需要单独开一个服务,将其配置为Eureka的服务端。
(2) Nacos
nacos客户端依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.yml配置微服务客户端信息
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/cloud_order?useSSL=false
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderService
cloud:
nacos:
server-addr: localhost:8848
discovery:
cluster-name: YinChuan
mybatis:
type-aliases-package: cn.itcast.user.pojo
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.itcast: debug
pattern:
dateformat: MM-dd HH:mm:ss:SSS
#eureka:
# client:
# service-url:
# defaultZone: http://127.0.0.1:10086/eureka
#设置同集群优先的负载均衡,拉去服务优先拉去同集群的服务
userService:
ribbon:
NFLoadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule # 负载均衡规则
#配置nacos的命名空间,使服务在一个集群下也能实现环境隔离
#spring:
# cloud:
# nacos:
# server-addr: localhost:8848
# discovery:
# cluster-name: HZ
# namespace: 492a7d5d-237b-46a1-a99a-fa8e98e4b0f9 # 命名空间,填ID
注册中心有各种规则配置,需要自行去搜索学习配置,或者去官网查看文档,等我看会了,再补充。
3.服务的拉取
这里使用到的请求框架为RestTemplate,需要在启动类里,注入RestTemplate实例到Spring容器里。
之后在微服务里请求其他微服务
4.关于详细的底层负载均衡策略和配置规则,打算单独写一篇博客,后续将博客连接更新到下方。