一、注册中心 1、注册中心演变过程
2、注册中心必备功能① 服务的上线
② 服务的下线
③ 服务的剔除
④ 服务的查询
⑤ 注册中心HA
⑥ 注册中心节点数据同步
⑦ 服务信息的存储,比如mysql,redis,zookeeper,内存map等
3、RPC远程调用过程
① 负载均衡策略:随机,轮询,一致性Hash等;
② 容错机制:失败重试,失败自动切换等;
③ 透明代理: 调用远程方法跟调用本地的方法一样;
④ 协议: 双方约定好的协议,比如http协议,dubbo协议等;
⑤ 协议编解码:按照指定的协议进行编解码;
⑤ 序列化反序列化:网络传输的都是流,分字节流和字符流,所以需要对传输的数据做序列化,接收的流做反序列化;
⑥ 网络传输: 知道对方的ip+port就可以建立网络连接也就是socket连接,然后可以发起网络请求和接收对应的响应;
⑦ 线程池:io线程负责io连接,读取事件,等读取完成后交给线程池去处理相应的业务,类似netty的reactor模型;
二、Eureka详解 1、Eureka核心的Rest Api接口列表 请求名称 请求方式 HTTP地址 请求描述注册服务 POST /eureka/apps/{appID} 传递JSON或者XML格式的参数内容,HTTP code为204表示成功
删除服务 DELETE /eureka/apps/{appID}/{instanceID} HTTP code为200时表示成功
发起心跳 PUT /eureka/apps/{appID}/{instanceID} HTTP code为200时表示成功
查询服务 GET /eureka/apps HTTP code为200时表示成功,返回XML/JSON数据
查询指定appID的服务列表 GET /eureka/apps/{appID} HTTP code为200时表示成功,返回XML/JSON数据
查询指定appID&instanceID的服务 GET /eureka/apps/{appID}/{instanceID} 获取指定appID以及instanceID的服务信息,HTTP code为200时表示成功,返回XML/JSON数据
查询指定instanceID服务列表 GET /eureka/apps/instances/{instanceID} 获取指定instanceID的服务信息,HTTP code为200时表示成功,返回XML/JSON数据
变更服务状态 PUT /eureka/apps/{appID}/{instanceID}/status?value=DOWN 服务上线、服务下线等状态改变,HTTP code为200时表示成功
2、Eureka服务端和客户端 2.1 搭建Eureka服务端
第一步:加依赖
<!--netflix-eureka-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>