一、Nacos

1、 为什么选择Nacos?
在微服务中,首先需要面对的问题就是如何查找服务(软件即服务),其次,就是如何在不同的服务之间进行通信?如何更好更方便的管理应用中的每一个服务,如何建立各个服务之间联系的纽带,由此注册中心诞生(例如淘宝网卖家提供服务,买家调用服务)。
Nacos(DynamicNaming and Configuration Service)是一个应用于服务注册与发现、配置管理的平台。它孵化于阿里巴巴,成长于十年双十一的洪峰考验,沉淀了简单易用、稳定可靠、性能卓越的核心竞争力。

https://nacos.io/zh-cn/docs/quick-start.html

2、服务启动与访问
所有系统中的指令在执行时,首先会从执行指令的当前目录查找指令,假如当前路径没有这个指令,则从操作系统中配置的path环境变量中去查找。
假如path环境变量中也没有找到这个指令,则会提示不是内部或外部命令。

1)Windows启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
2)Linux/Unix/Mac启动命令(standalone代表着单机模式运行,非集群模式):
./startup.sh -m standalone

注意:JVM的新生代和老年代

3、在idea中启动nacos

利用脚本 shell script

为什么n容器运行nacos运行不起来_为什么n容器运行nacos运行不起来

二、部分知识补充1

java.net
ServerSocket 会启动一个线程池。并发处理客户端请求,
当线程多时,未处理的任务会形成队列,形成阻塞队列。
底层发送心跳包。

补充1:

1)/provider/echo/{msg}
接收用( @PathVariable(“msg”) String msgs )

2)tomcat服务器默认服务端口是8080

@Value("${server.port:8080}")
        private String provider;

server.port: 8080
value读取的是配置文件yml中的

3)当服务启动时会向nacos发送心跳包(5秒一次)
nacos 15s检查不到心跳包,会把服务标识为非健康状态。监听到30s左右没有心跳包就认为服务已经死掉。
nacos底层是把服务放到map中。 K是服务名,不能重复。V是一个List集合。List<>。
注册是把服务写到内存中。
503 标识服务不可用 处于不健康状态

三、部分知识补充2

1.先写pom.xml (web和cloud alibaba)
2.写yml配置文件 (端口号、)
3.写启动类

我们访问一个订单模块数据(例如“我的订单”),订单模块中还要呈现商品信息。
商品信息是服务的提供方,订单模块是服务的消费方。
API : 类和接口 亦或者是 一个请求路径
封装:1)狭义:属性私有化,方法能公开则公开

2)广义:一个系统由哪些服务构成,一个服务由哪些模块构成,一个模块由哪些对象构成,一个对象由哪些属性和方法构成

1.定义要调用的API
2.谁去访问这个API

如何整合第三方的Bean?

@Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }

构建RestTemplate对象,并将此对象交给spring管理。
后续我们会通过此对象进行远程服务调用

@Bean(“指定的名字”)
使用后,如果后台有对象,不会在调用此方法,保证spring管理的只有一个对象
补充:
500服务器异常。先查看服务器的报错。

ctrl+n 快速查找
ctrl+f12 查看
ctrl+h 查看继承体系

负载均衡

设计模式、策略(算法)
轮询策略
方法一负载均衡:

//1.从注册中心获取服务实例
            ServiceInstance instance = loadBalancerClient.choose("sca-provider");
            //2.基于restTemplate进行服务实例调用
            String ip = instance.getHost();
            int port = instance.getPort();
			//String url="http://"+ip+":"+port+"/provider/echo/"+appName;
            String url=String.format("http://%s:%s/provider/echo/%s",ip,port,appName);

为什么n容器运行nacos运行不起来_java_02


browser-(url)–consumer-(url)–provider

browser-provider

browser-consumer

方法二负载均衡:

@Bean
    @LoadBalanced
    public RestTemplate loadrestTemplate(){
        return new RestTemplate();
    }
@Autowired
        private RestTemplate loadrestTemplate;
        /*依赖注入,首先先看类型,其次看方法名。*/
public String doRestEcho3(){

            String url=String.format("http://sca-provider/provider/echo/%s", appName);
            return loadrestTemplate.getForObject(url,String.class);
        }

楼的壁垒瑟克兰德
此处拦截器:实现了服务负载均衡
在使用拦截器的情况下,性能会低。

为什么n容器运行nacos运行不起来_心跳包_03