4.如何使用springcloud之nacos篇

第3节课我们学习如何使用github上传我们的代码,现在我们要正式进入微服务篇。首先,我们要明确的是什么是微服务?

什么是微服务?

        

上面的这个图很清楚的向我们展示了什么是微服务,就是我们把一个项目拆成无数个小项目进行实现,比如就拿我们最熟悉的登入和注册操作来说。

相当于我们的登入和注册分别是两个不同的程序,分别可以对我们的数据库进行crud。

我们想实现这么一个需求,比如一个网站,很有可能一个人之前注册过了,后面忘记了。而自己又重新注册了一边,里面如果我们发现了,我们想在注册模块调用我们的登入模块。这就形成我们的微服务。

什么是springcloud?

springcloud是一系列实现微服务的技术总称

虽然实现的技术有多种多样,但是我们要做的事情如上图所示:

接下我们会一个个分别讲我们为什么要这么做,我们应该如何做。

服务注册和发现

        一个项目肯定有若干个微服务在提供服务,而微服务之间可能有着相互调用的关系。如何管理,和调用这些服务就成了一个问题。加上,我们更加希望的是可以让多个服务器同时的提供相同的一个服务。而如何客户端需要调用的话,我们就可以让其中的一个服务器提供服务。

所以我就希望可以有一个控制中心来帮我们自动地进行轮询,自动的管理我们的微服务。

       nacos闪亮登场!

        D:\谷粒商城\大型电商--谷粒商城\1.分布式基础(全栈开发篇)\代码\springcloud\nacos-server-2.3.2\nacos\bin.

        打开nacos存在的bin目录,打开该目录的控制台输入。

        startup.cmd -m standalone

        standalone的意思是以单例模式启动。启动后如下图。之后用阅览器打开。

        

之后出来这个:

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@EnableDiscoveryClient
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

首先,就是在java类中的主启动类里面加入

@EnableDiscoveryClient

接着配置自己的信息。

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://192.168.56.10:3306/username
    driver-class-name: com.mysql.jdbc.Driver

  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848

  application:
    name: service_register

这样,我们就可以让我们的服务被发现了。

接下就是服务之间的互相调用了。

首先编写一个feign文件夹,定义调用接口。

具体结构代码结构如下

package com.example.demo.feign;


import com.example.demo.demo.common.R;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 这是一个声明式的远程调用
 */
@FeignClient("你需要调用的那个程序在nacos上注册的服务名")
public interface loginFeignService {

    @RequestMapping("/coupon/coupon/member/list")
    public R membercoupons();

}

在启动类配置

@EnableFeignClients(basePackages = "该fegin借口所在的源根路径")
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@EnableFeignClients(basePackages = "该fegin借口所在的源根路径")
@EnableDiscoveryClient
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

最后才能在你需要的地方进行调用

package com.example.demo.demo.controller;


import com.example.demo.demo.common.R;
import com.example.demo.demo.model.LoginRequest;
import com.example.demo.demo.service.LoginService;
import com.example.demo.feign.LoginFeignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;



@RestController
@RequestMapping("/user")
public class LoginController {

    @Autowired
    LoginService loginService;
    @Autowired
    LoginFeignService loginFeignService;
    @PostMapping("/checkUsernameUsed")
    public R login(@RequestBody LoginRequest loginRequest){
        return loginService.getLogin(loginRequest);
    }
    @PostMapping("/Login")
    public void login(){
        loginFeignService.login();
        
    }
}
总结想要远程调用别的服务
* 1)、引入open-feign
* 2)、编写一个接口,告诉SpringCloud这个接口需要调用远程服务
*   1、声明接口的每一个方法都是调用哪个远程服务的那个请求
* 3)、开启远程调用功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值