gateway nacos注册服务_第二篇 Spring Cloud Alibaba实战(一)Nacos服务注册与发现

一. 为什么使用spring cloud alibaba

很多人可能会问,有了spring cloud这个微服务的框架,为什么又要使用spring cloud alibaba这个框架了?最重要的原因在于spring cloud中的几乎所有的组件都使用Netflix公司的产品,然后在其基础上做了一层封装。然而Netflix的服务发现组件Eureka已经停止更新,在使用的时候发现过其一个细小的Bug;而其他的众多组件也会陆续停止维护。所以急需其他的一些替代产品,也就是spring cloud alibaba,目前正处于蓬勃发展的态式。

二. 安装注册中心Nacos

nacos是阿里巴巴研发的一个集注册中心与配置中心于一体的管理平台,使用其非常的简单。

下载nacos

https://github.com/alibaba/nacos/releases

我下载的是1.3.2版本,如下图所示:

7e7fd41cfc71d2595598f9d3e744ed74.png

1、Windows系统直接解压,找到bin目录,双击startup.cmd启动。如果出现一闪而退,请参照以下方法解决:

(1)、编辑startup.cmd,把里面的MODE修改一下,保存后重新启动(我就是使用该方法解决了问题),参考下图:

a78c222a3c012559788ab481ba51335a.png

(2)、检查jdk是否为jdk8 64bit,并配置环境变量,且环境变量必须为JAVA_HOME

(3)、检查maven,并配置环境变量

2、Linux系统也要安装好jdk环境和maven环境,执行mvn -version出现下面内容则成功:

6e426f0f59ceeee4816cd1b2c299fbdb.png

然后到nacos/bin目录下执行该命令启动

sh startup.sh -m standalone

nacos默认端口是8848,http://ip:8848/nacos访问,输入账号密码:nacos nacos即可。

7d869ed65aaa5dd1f0c91b6d1fd7537d.png

三、将服务部署到nacos

整合springcloud和springcloud alibaba,注意版本号要对应。

第一步,加依赖

org.springframework.cloud                spring-cloud-dependencies                Greenwich.SR1pomimportorg.springframework.cloud                spring-cloud-alibaba-dependencies                0.9.0.RELEASEpomimportorg.springframework.cloud            spring-cloud-starter-alibaba-nacos-discovery        

第二步,加注解(这个新版省略了注解)

第三步,写配置,在yml文件中加入nacos配置

spring:  cloud:        nacos:          discovery:            #指定nacos server的地址            server-addr: localhost:8848  #指定服务名称  application:    name: user-center

此时刷新nacos访问页面,将会看到服务已经注册上了。

8d1552db998c1f85f7b6a85e2c4f3777.png

四、测试

需求:为内容服务引入用户服务中的用户信息。

方案:采用RestTemplate方式来调取用户中心接口,通过DiscoveryClient获取nacos上的用户中心实例。

1、用户服务提供一个查询用户信息接口

@RestController@RequestMapping("/users")public class UserController {    @Resource    private UserService userService;    @GetMapping("/{id}")    public User findById(@PathVariable Integer id){        return this.userService.findById(id);    }}

2、内容中心接口

@RestController@RequestMapping("/shares")public class ShareController {    @Resource    private ShareService shareService;    @GetMapping("/{id}")    public ShareDTO findById(@PathVariable Integer id) {        return this.shareService.findById(id);    }}@Servicepublic class ShareService {    @Resource    private ShareMapper shareMapper;    @Resource    private RestTemplate restTemplate;    @Resource    private DiscoveryClient discoveryClient;    public ShareDTO findById(Integer id) {        Share share = this.shareMapper.selectByPrimaryKey(id);        Integer userId = share.getUserId();        //用户中心的所有实例信息        List instances = discoveryClient.getInstances("user-center");        String targetUrl = instances                .stream()                .map(instance -> instance.getUri().toString() + "/users/{id}")                .findFirst()                .orElseThrow(() -> new IllegalArgumentException("当前没有实例对象"));        //根据userId查询用户信息        UserDTO userDTO = this.restTemplate.getForObject(targetUrl, UserDTO.class, userId);        ShareDTO shareDTO = new ShareDTO();        BeanUtils.copyProperties(share, shareDTO);        shareDTO.setWxNickname(userDTO.getWxNickname());        return shareDTO;    }}

请求结果如下图展示:author字段是来自用户服务的

8ccd3db4162fedc805cd8a39a75bfb16.png

OK,nacos入门就到这里,下一篇我们来学习ribbon负载均衡哦。

有问题欢迎小伙伴留言。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值