微服务是一种经过良好架构设计的分布式架构方案,特征:
1、单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。
2、面向服务:微服务对外暴露业务接口
3、自治:团队独立,技术独立,数据独立,部署独立
4、隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。
因为每个服务之间是互相独立的,就连对应的数据库信息都是独立的,他们之间各自完成各自的服务,不会互相影响,具有隔离性。
但问题也就有了,我们在开发一个项目时,肯定要开发不止3,4个微服务,需要开发上百个微服务都是有可能的,且每个微服务实现的功能都很单一,在我们进行复杂一点的操作时就需要多个微服务互相调用。那么海量的微服务,我们应该怎么去管理他们,并且怎么让他们之间实现互相调用呢?
nacos注册中心就是来帮助我们做这个的:
我们都知道在微服务中有服务提供者和服务消费者。服务提供者:一次业务中,被其他微服务调用的服务。(提高接口给其他微服务);服务消费者:一次业务中,调用其他微服务的服务(调用其他微服务的接口)。
在服务提供者和服务消费者等微服务启动时,就会向nacos注册中心发送注册信息,信息包括本服务的名字(配置中自定)和本微服务的端口号(暴露调用接口)等等信息。
这样nacos注册中心中就有了所有微服务的相关信息,在服务消费者需要调用服务提供者的服务时,就只需要向nacos注册中心根据服务名称去拉取对应的服务,nacos注册中心就会把调用该服务需要的所有信息发送给服务消费者,这样服务消费者就可以根据获取的端口和服务名称发送远程调用了。
同时为了防止已经在nacos注册中心完成注册的服务在调用中途挂了,而导致整个项目出现问题,nacos注册中心会让注册的服务每隔几秒或十几秒向nacos发送一次心跳,来向nacos证明该服务还活着,还能正常工作。
下面让我们先来下载nacos,网址:Tags · alibaba/nacos · GitHub
选择你想下载的版本就好了。
在注册后,你会得到一个nacos文件夹。
然后打开终端,在终端中启动nacos:先在终端中切换到nacos文件夹中的bin目录。
启动命令(standalone代表着单机模式运行,非集群模式): sh startup.sh -m standalone
然后在浏览器中打开网址:http://localhost:8848/nacos
默认登陆账号和密码都是:nacos
如果启动成功就会显示这样的页面:
目前我还没有启动微服务并注册到nacos,所有现在为空 。
在我们需要启动并注册到nacos的服务的application.yml文件中应该声明好对应的数据库连接信息、本服务端口和nacos的地址。
server:port: 8088 #本服务端口号
spring:datasource:url: jdbc:mysql://localhost:3306/cloud?useSSL=false&allowPublicKeyRetrieval=trueusername: rootpassword: quwenhaodriver-class-name: com.mysql.jdbc.Driverapplication:name: orderservice #注册到nacos中本服务的名称,后面会根据该名称做服务的远程调用cloud:nacos:server-addr: 127.0.0.1:8848 # nacos服务地址
#以后操作数据库mybatis的配置
mybatis:type-aliases-package: cn.itcast.user.pojoconfiguration:map-underscore-to-camel-case: true
这样后启动该服务就被注册到nacos中。我启动了俩个
我们可以点击 详细 去查看该微服务的详细信息