当前位置: 首页 > news >正文

微服务使用步骤

Maven的依赖冲突解决方案:

  • 路径最短原则
  • 配置优先原则
  • 破坏规则则使用排除

SpringBoot场景启动器starter的开发流程

   c3p0-spring-boot-starter自定义场景启动器test-c3p0调用自定义场景启动器
  • SpringBoot自动装配
  • SpringBoot应用启动原理
  • nacos服务治理
    安装
    启动bin/startup -m standalone
    webUI地址为localhost:8848/nacos,其中用 户nacos/nacos
    关闭bin/shutdown

微服务

将应用划分为若干个体量更小的服务,每个服务可以独立开发、独立部署、独立运行,服务之间可以通过轻量级通信机制进行相互调用

用户管理系统
用户微服务

 create database test1;
use test1;create table tbl_users(id bigint primary key auto_increment,name varchar(32) not null,role_id bigint
)

角色微服务

create database test2;
use test2;create table tbl_role(id bigint primary key auto_increment,name varchar(32) not null
)

针对不同的服务当作一个独立的应用进行开发

下面来写Controller里的具体实现

@RestController // 轻量级通信机制  http+json
public class UserController{@Autowired private RestTemplate restTemplate;      //可以当作浏览器对待@Autowired private IUserServ userService;@RequestMapping("/get")public String getUser(){//当前应用内部业务User user=userService.load(1);  //从当前应用中加载对应的1号用户信息Role role=restTemplate.getForObject("role服务的地址",Role.class);....}
}

role服务的地址的问题:

方法1:使用绝对路径,例如http://localhost:7081/roles/1。问题是role服务的地址可能会出现调整,或者role服务由于频繁访问需要多节点部署
针对方法1的缺陷引入中间件nacos作为注册中心。当所有的服务提供者,例如role服务,启动时都会自动向nacos注册自己的信息,例如服务的名称,自己的地址和自己对外提供服务的端口号等当服务消费者需要调用服务时,可以向nacos查询对应服务名称的提供者地址列表,例如通过role-service服务名获取到所有的role服务的地址列表

Nacos应用步骤

服务提供者

1、添加依赖

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、添加配置

spring.application.name=role-service   定义的服务名称,服务消费者是通过服务名称查找地址
spring.cloud.nacos.discovery.server-addr=localhost:8848  Nacos的地址

3、在配置类上添加注解以启动Nacos客户端

@EnableDiscoveryClient  也可以直接定义在主类
@SpringBootConfiguration
public class NacosConfig {
}

Nacos

1、安装

2、 启动nacos命令startup -m standalone

3、启动服务提供者

4、在nacos的webUI可以查看localhost:8848/nacos

服务消费者

1、依赖

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery

2、配置

spring.application.name=user-service 定义的服务名称,服务消费者是通过服务名称查找地址
spring.cloud.nacos.discovery.server-addr=localhost:8848 Nacos的地址

3、通过注解启动nacos client

@EnableDiscoveryClient

4、可以通过nacos client查询注册在nacos中的所有对应的服务提供者

@RestController
public class TestController {@Autowiredprivate RestTemplate restTemplate;@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/test")public String test(String name){
//        String url="http://localhost:8070/hello?name=zhangsan"//从nacos根据服务名称获取对应的服务提供方的地址端口号等信息List<ServiceInstance> serviceInstances = discoveryClient.getInstances("hello-service");//从nacos种获取服务列表后需要根据某种策略获取某一个具体的服务实例---负载均衡Random r=new Random();ServiceInstance instance = serviceInstances.get(r.nextInt(serviceInstances.size()));System.out.println("远程服务的主机地址:"+instance.getHost());System.out.println("远程服务的端口号:"+instance.getPort());//拼接访问的URL地址String url=instance.getUri()+"/say?name="+name;System.out.println("远程服务地址:"+url);String res = restTemplate.getForObject(url, String.class);return "Consumer:["+res+"]";}
}
http://www.lryc.cn/news/108144.html

相关文章:

  • Ubuntu 23.04 作为系统盘的体验和使用感受
  • 百分点科技跻身中国智慧应急人工智能解决方案市场前三
  • vscode如何退出/切换 github 账号
  • maven发布到中央仓库
  • C#IEnumberable<>
  • Flink非对齐checkpoint原理(Flink Unaligned Checkpoint)
  • Linux crontab命令:循环执行定时任务(详解)
  • Linux系统jenkins+newman+postman持续集成环境搭建
  • flutter:Future、Stream、RxDart
  • Jenkins安装、配置、自动化构建前(nodejs)后端(maven)项目
  • 【网络基础进阶之路】设计网络划分的实战详解
  • 艺术二维码 API 申请及使用
  • JVM GC ROOT分析
  • 记一道有趣的sql题
  • C高级【day2】
  • 认识Webpack插件Plugin;CleanWebpackPlugin插件;HtmlWebpackPlugin;DefinePlugin;Mode模式
  • Redis 6.0的新特性:多线程、客户端缓存与安全
  • 【雕爷学编程】MicroPython动手做(37)——驱动LCD与图文显示3
  • 自然语言处理从入门到应用——LangChain:提示(Prompts)-[提示模板:序列化提示信息]
  • 【LinearAlgebra】Chapter 12 - Linear Algebra in Probability Statistics
  • webshell详解
  • 数据结构 | 搜索和排序——搜索
  • 【python】对象
  • k8s概念-污点与容忍
  • “从零开始学习Spring Boot:构建高效、可扩展的Java应用程序“
  • 通向架构师的道路之tomcat集群
  • 结构体,枚举,联合大小的计算规则
  • Vue2 第十七节 Vue中的Ajax
  • ES6 - 字符串新增的一些常用方法
  • 最新SQLMap安装与入门技术