热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

07.微服务springcloudalibabanacos

1.springcloudalibaba(微服务一站式解决方案),包含分布式微服务的组件只需要少量注解即可实现微服务包括服务治理nacosNaming-service注册中心con




1.spring cloud alibaba(微服务一站式解决方案),包含分布式微服务的组件



只需要少量注解即可实现微服务


包括 服务治理 nacos=Naming-service注册中心+config-service配置中心
服务保护 sentinel(熔断器)= sentinel控制台+@SentinelResource
远程调用 dubbo
分布式事务 seata = at+tcc+saga+xa
消息驱动(可搞事务) RocketMQ(java写的)
商业化注解(要money) oss(文件存储) sms(发短信)
acm scheduler x(定时任务)

2.不能自己搭配版本看github alibaba文档,还要加spring cloud alibaba版本(本来就有个依赖 spring cloud)

3.语义化版本 1.0.0和1.0.1表示更新小bug ,2.0.0是更新了大版本
//alibaba稳定版本2.2.7.RELEASE
//下载网站github的nacos–>tags—>2.0.3点进去,下载zip解压

4. 使用
在nacos/conf配置文件:
1.需要mysql,建个数据库nacos 字符集utf8mb4
拖到表执行sql文件,建议5.7版本(!!!我装了8.0直接启动不了)
2.改nacos文件夹的配置文件 application.properties
context是默认的路径
打开 33 36 39 40 41行的注释打开

### Count of DB:
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=root

4.打开cmd文件会报错因为会打开集群
cmd文件是可以打开编辑的,批处理文件()
set MODE="standalone"
5.访问 localhost:8848/nacos/
数据库users查看用户密码

5.nacos与eureka(服务端版本可以不管)



1.nacos有登录,eureka没有
2.eureka的注册中心,两个项目有相同的模块名称(把项目名称改动即可解决)
nacos 命名空间(隔离,互不影响)
car—>customer-seriver flower---->customer-seriver
分组(两个团队同时开发,谁开发得快有奖金,互不影响)
//选择start.aliyun.com建springboot项目可以选nacos
web依赖和nacos discovery


3.写配置文件
server:
port: 8080
spring:
application:
name: nacas-client-a
cloud:
nacos: #没有指定命名空间注册到public中,没有指定分组就到DEFAULT_GROUP
server-addr: localhost:8848 #注册中心的地址
username: nacos #注册中心用户名
password: nacos #密码
discovery:
namespace: xxid #在可视化界面创建后的id不是名字
group: A_GROUP #里面的组名
service: user-service #默认用spring.application的值
4.主类加注解
@EnableDiscoveryClient //开启nacos
5.写client

6.跨组怎么找服务写clientb写controller看能不能拿到服务列表(秒级发现,比eureka快)

//同一组名可以相互调用
@Autowired
public DiscoveryClientClient discoveryClient;
@GetMapping("aa")
public String aa(){
discoveryClient.getInstances("user-service");
return "ok"
}

7.集成openfeign

//在提供者写controller info方法
//消费者
@EnableFeignClients
//写个feign的文件夹写接口
@FeignClient(value="user-service") //写nacos的service名字
public interface TestFeign{
@GetMapping("info");
public String info();
}
//在controller看是否调用成功
@Autowired
public TestFeign testFeign;

testFeign.info();//在方法里面调用

8.集成gateway,要看清楚哪个接口是哪个服务的(加入即可访问)



//在配置文件写网关配置
//直接在 服务名称/接口即可访问 localhost/nacos-client-a/test


server:
port: 80
spring:
application:
name: gateway
cloud:
nacos:
server-addr: localhost:8848,localhost:8850
username: nacos
password: nacos
discovery:
namespace: ce9d7e87-fd23-4622-96a9-3893ed689824
group: ac
gateway:
discovery:
locator:
enabled: true # 开启动态路由
lower-case-service-id: true`

9.nacos开启健康检查(加入依赖)

10.nacos的配置项(在nacos图形界面可以改,看文档)



权重
元数据: 可以自己写上让其他服务拿到自定义数据


11.nacos集群(路径不能有中文)(服务之间数据可以相互同步)



1. application.properties 改成数据库的账号密码
2. cluster.conf 复制一份去example(每个nacos都加上这个配置)
#cmd ipconfig,禁用虚拟机,写这个到文件最后一行
我的ip:8848
我的ip:8849
我的ip:8850
#端口被占用cmd,kill进程
netstat -ano |findstr 8849
taskkill /f /t /im 28720
3.java配置文件 server-addr 写上多个注册地址,即可搭建集群

12.nacos配置文件中心(一个服务需要部署到多台服务器,相同的配置文件,如果要修改,就需要下架服务重新打包,麻烦)
1.在nacos图形界面 按+号,增加配置文件



(改几台也可以,配置文件不放在本地,改了后,配置文件中心去仓库拉取配置文件不用重启!!)
nacos主页–>配置列表–>+ —> 新建配置—>yaml—>随便写点配置文件
hero:
name: 亚索


2.写个项目加依赖 web和nacos config 写个controller
@Value("${hero.name}")
private String name;
@GetMapping("info")//返回结果
3.写个文件 bootstrap.yml //表示可以在云端拉的配置文件

server:
port: 8081
spring:
application:
name: nacos-config-a
cloud:
nacos:
config:
username: nacos
password: nacos
#namespace:
#group:
prefix: nacos-config-a #读哪个配置文件
file-extension: yml #拓展名
server-addr: localhost:8848 #配置文件自动放在数

据库持久化
13.改配置文件后不重启刷新配置文件 在entity加



@RefreshScope,后加入到注入即可(后面配置文件直接可以配置)
更多—>历史版本//回滚配置文件,默认组 DEFAUT_GROUP








推荐阅读
author-avatar
蚂蚁少校
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有