网页网站设计公司有哪些,网站服务器租赁合同,车陂手机网站开发,顺德做网站的公司微服务
Maven的依赖冲突解决方案#xff1a; 路径最短原则 配置优先原则 破坏规则则使用排除 SpringBoot场景启动器starter的开发流程 c3p0-spring-boot-starter自定义场景启动器 test-c3p0调用自定义场景启动器 SpringBoot自动装配 SpringBoot应用启动原理 nacos服务治…微服务
Maven的依赖冲突解决方案 路径最短原则 配置优先原则 破坏规则则使用排除 SpringBoot场景启动器starter的开发流程 c3p0-spring-boot-starter自定义场景启动器 test-c3p0调用自定义场景启动器 SpringBoot自动装配 SpringBoot应用启动原理 nacos服务治理 安装启动bin/startup -m standalonewebUI地址为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
)针对不同的服务当作一个独立的应用进行开发
RestController // 轻量级通信机制 httpjson
public class UserController{Autowired private RestTemplate restTemplate; //可以当作浏览器对待Autowired private IUserServ userService;RequestMapping(/get)public String getUser(){//当前应用内部业务User useruserService.load(1); //从当前应用中加载对应的1号用户信息Role rolerestTemplate.getForObject(role服务的地址,Role.class);....}
}role服务的地址的问题
方法1使用绝对路径例如http://localhost:7081/roles/1。问题是role服务的地址可能会出现调整或者role服务由于频繁访问需要多节点部署针对方法1的缺陷引入中间件nacos作为注册中心。 当所有的服务提供者例如role服务启动时都会自动向nacos注册自己的信息例如服务的名称自己的地址和自己对外提供服务的端口号等当服务消费者需要调用服务时可以向nacos查询对应服务名称的提供者地址列表例如通过role-service服务名获取到所有的role服务的地址列表
Nacos应用步骤
服务提供者
1、添加依赖
dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency2、添加配置
spring.application.namerole-service 定义的服务名称服务消费者是通过服务名称查找地址
spring.cloud.nacos.discovery.server-addrlocalhost:8848 Nacos的地址3、在配置类上添加注解以启动Nacos客户端
EnableDiscoveryClient 也可以直接定义在主类
SpringBootConfiguration
public class NacosConfig {
}Nacos
1、安装
2、 启动nacos命令startup -m standalone
3、启动服务提供者
4、在nacos的webUI可以查看localhost:8848/nacos
服务消费者
1、依赖
dependency groupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId
/dependency2、配置
spring.application.nameuser-service 定义的服务名称服务消费者是通过服务名称查找地址
spring.cloud.nacos.discovery.server-addrlocalhost:8848 Nacos的地址3、通过注解启动nacos client
EnableDiscoveryClient4、可以通过nacos client查询注册在nacos中的所有对应的服务提供者
RestController
public class TestController {Autowiredprivate RestTemplate restTemplate;Autowiredprivate DiscoveryClient discoveryClient;GetMapping(/test)public String test(String name){
// String urlhttp://localhost:8070/hello?namezhangsan//从nacos根据服务名称获取对应的服务提供方的地址端口号等信息ListServiceInstance serviceInstances discoveryClient.getInstances(hello-service);//从nacos种获取服务列表后需要根据某种策略获取某一个具体的服务实例---负载均衡Random rnew Random();ServiceInstance instance serviceInstances.get(r.nextInt(serviceInstances.size()));System.out.println(远程服务的主机地址instance.getHost());System.out.println(远程服务的端口号instance.getPort());//拼接访问的URL地址String urlinstance.getUri()/say?namename;System.out.println(远程服务地址url);String res restTemplate.getForObject(url, String.class);return Consumer:[res];}
}