单机搭建
jpscd /opt/lstar -zxf nacos-server-1.4.2.tar.gz mv nacos soft/nacos8848cd soft/nacos8848/conf/vim application.propertiescd ../bin/lspwd#常在/etc/profile软件定制开发供应商文件中修改环境变量vim /etc/profile#软件定制开发供应商添加到末尾=============================#nacos envexport NACOS_HOME=/opt/soft/nacos8848export PATH=$PATH:$NACOS_HOME/bin=============================#:wq!cd ~cd /opt/soft/nacos8848/bin/#软件定制开发供应商关闭集群模式vim startup.sh#=============================##软件定制开发供应商修改下面文件export MODE="standalone"#=============================##:wq!source /etc/profile#启动startup.sh#软件定制开发供应商打开浏览器192.168.64.200:8848/nacos/#/login
网页界面
NACOS.一个易于使用的动态服务发现、配置和服务管理平台,用于构建云原生应用程序
ideal 打包?
负载均衡ribbon
1.什么是Ribbon目前主流的负载方案分为以下两种:集中式负载均衡,在消费者和服务提供方中间使用独立的代理方式进行负载,有硬件的(比如 F5),也有软件的(比如Nginx)。客户端根据自己的请求情况做负载均衡,Ribbon 就属于客户端自己做负载均衡。Spring Cloud Ribbon是基于Netflix Ribbon 实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer获取到服务提供的所有机器实例,Ribbon会自动基于某种规则(轮询,随机)去调用这些服务。Ribbon也可以实现我们自己的负载均衡算法。
公司看项目 注意点
springCloud alibaba 版本
ideal 配置nacos
pom导入包
#properties 写入下面版本<spring-boot.version>2.3.2.RELEASE</spring-boot.version><spring-cloud.version>Hoxton.SR9</spring-cloud.version><spring-cloud-alibaba.version>2.2.6.RELEASE</spring-cloud-alibaba.version>#导入dependency依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope></dependency><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>${spring-cloud-alibaba.version}</version> <type>pom</type> <scope>import</scope></dependency>
配置yum
server: port: 12000spring: application: name: stockserv cloud: nacos: discovery: server-addr: 192.168.64.200:8848 username: nacos password: nacos namespace: public
导入子项目依赖
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
编写订单的配置文件
@Configurationpublic class RemoteConfig { @Bean public RestTemplate getAjax(){ return new ResTemplate; }}浏览器输入地址
http://localhost:1201/order-server/addorder
负载均衡
http://localhost:1201/order-server/addorder
策略
轮询区域轮询区域分区从事轮询线性轮询
方式1
#Application中上面加这个注解@RibbonClients(value={ @RibbonClient(name="stockserv",configuration= RibbonRule.class)})#不在applicaiton目录下 新建实体类RibbonRule@Configurationpublic class RibbonRule { //手动权重 @Bean public IRule iRule(){ return new NacosRule(); }}
方式二
yum里面配置stockserv: ribbon: NFloadBalancerRuleClassName: com.alibaba.cloud.nacos.ribbon.NacosRule
--------------注意2种方法不能一起写*--------------
#类似规则引擎。。。。。。。#自定义负载策略public class MyNacosRule extends AbstractLoadBalancerRule { @Autowired private NacosDiscoveryProperties nacosDiscoveryProperties; @Override public void initWithNiwsConfig(IClientConfig iClientConfig) { } @Override public Server choose(Object o) { //从注册中心上获取动态服务列表 DynamicServerListLoadBalancer lb= (DynamicServerListLoadBalancer)getLoadBalancer(); //获取服务名 String serverName = lb.getName(); //构建服务名实例 NamingService ns = nacosDiscoveryProperties.namingServiceInstance(); //nacos基于权重的算法 try { Instance instance = ns.selectOneHealthyInstance(serverName); //放入服务器 return new NacosServer(instance); } catch (NacosException e) { e.printStackTrace(); } //如果出现问题 则返回用户null return null; }}
配置yum
stockserv: ribbon: NFloadBalancerRuleClassName: com.kgc.mynacos.rrules.custrules.MyNacosRule
权重
controller配置权重
#1 controller配置系统权重#controller层 注意(configuration= RibbonRule.class 中修改为RibbonRule)#@SpringBootApplication//@RibbonClients(value={// @RibbonClient(name="stockserv",configuration= RibbonRule.class)//})public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class,args); }}#rules层 提供系统自带的权重 rules的位置不要和application一级@Configurationpublic class RibbonRule { //手动权重 @Bean public IRule iRule(){// return new NacosRule(); //自动权重 return new RandomRule(); }}#2 controller配置自定义权重#controller层注意(configuration= MyNacosRule.class 中修改为MyNacosRule)#@SpringBootApplication//@RibbonClients(value={// @RibbonClient(name="stockserv",configuration= MyNacosRule.class)//})public class OrderApplication { public static void main(String[] args) { SpringApplication.run(OrderApplication.class,args); }}#rules层 #提供自定义的权重 rules的位置不要和application一级#-----------------------------public class MyNacosRule extends AbstractLoadBalancerRule { @Autowired private NacosDiscoveryProperties nacosDiscoveryProperties; @Override public Server choose(Object o) { //从注册中心上获取动态服务列表 DynamicServerListLoadBalancer lb= (DynamicServerListLoadBalancer)getLoadBalancer(); //获取服务名 String serverName = lb.getName(); //构建服务名实例 NamingService ns = nacosDiscoveryProperties.namingServiceInstance(); //nacos基于权重的算法 try { Instance instance = ns.selectOneHealthyInstance(serverName); //放入服务器 return new NacosServer(instance); } catch (NacosException e) { e.printStackTrace(); } //如果出现问题 则返回用户null return null; } @Override public void initWithNiwsConfig(IClientConfig iClientConfig) { }}#-----------------------------
yml配置权重
#1 yum 中配置系统权重 (这个暂时不能用 )注意(RibbonRule类别写错 NFLoadBalancerRuleClassName 这个注意大小写)stockserv: ribbon: NFLoadBalancerRuleClassName: com.kgc.mynacos.rrules.custrules.RibbonRule #rules层 提供系统自带的权重 rules的位置不要和application一级@Configurationpublic class RibbonRule { //手动权重 @Bean public IRule iRule(){// return new NacosRule(); //自动权重 return new RandomRule(); }}#2 yum 中配置自定义权重 注意(MyNacosRule类别写错 NFLoadBalancerRuleClassName 这个注意大小写)stockserv: ribbon: NFLoadBalancerRuleClassName: com.kgc.mynacos.rrules.custrules.MyNacosRule#rules层 #提供自定义的权重 rules的位置不要和application一级#-----------------------------public class MyNacosRule extends AbstractLoadBalancerRule { @Autowired private NacosDiscoveryProperties nacosDiscoveryProperties; @Override public Server choose(Object o) { //从注册中心上获取动态服务列表 DynamicServerListLoadBalancer lb= (DynamicServerListLoadBalancer)getLoadBalancer(); //获取服务名 String serverName = lb.getName(); //构建服务名实例 NamingService ns = nacosDiscoveryProperties.namingServiceInstance(); //nacos基于权重的算法 try { Instance instance = ns.selectOneHealthyInstance(serverName); //放入服务器 return new NacosServer(instance); } catch (NacosException e) { e.printStackTrace(); } //如果出现问题 则返回用户null return null; } @Override public void initWithNiwsConfig(IClientConfig iClientConfig) { }}#-----------------------------
如果不配置就走轮询策略!!!
永久插入图片
首先将图片通过在线转码工具转换成base64的编码,并用以下格式嵌入即可,格式如下:![image] (base64)但是由于这base64编码往往都很长,很占篇幅,因此我们可以给图片编号,并将所有的图片base64编码放在文档的最后即可,格式如下: 在插入图片的地方使用:![image] [图片编号] 在文档最后使用:[图片编号]:base64编码