微信游戏网站源码怎么做,华为建站模板,怎么在网上注册自己的网站,广州建站软件文章目录 RPC项目
配置中心项目
网关项目
与传统RPC框架一样#xff0c;我们需要保证我们的服务是能被发现的。 也就是说#xff0c;我希望通过一种简单的方式#xff0c;就能将我们的服务暴露出去#xff0c;使得其他服务可以方便的去依赖这个服务。 因此#xff0c;我… 文章目录 RPC项目
配置中心项目
网关项目
与传统RPC框架一样我们需要保证我们的服务是能被发现的。 也就是说我希望通过一种简单的方式就能将我们的服务暴露出去使得其他服务可以方便的去依赖这个服务。 因此我们提供一个注解RpcServiceDeclaration。 这个注解的作用就是用来暴露能够提供RPC功能的服务。 在Server端中使用这个注解来标注某个对外暴露服务的Service服务即可。 之后当Client需要用到这个服务的时候就会去配置中心中找到这个服务然后通过代理对象的方式调用这个服务的方法从而最终调用服务成功。 而Client端也同理我们需要标注那些服务需要进行服务代理。 因此我们还需要为Client提供一个注解RpcAutowiredProxy。 这个注解的作用就是当Client使用服务的时候如果使用了当前注解那么就会对当前属性进行代理通过代理对象的方式调用RPC方法。 而服务暴露与发现就非常依赖注册中心的功能了因此我们还需要考虑如何整合第三方或者自研的注册中心并且为了保证项目的封装性我们最好能将注册中心的功能进行一下封装方便用户实现自己的注册中心功能。 对于注册中心一言以蔽之—提供服务的ip和port。 所以我们需要定义一下我们RPC项目中如何对接不同注册中心的一个服务实例信息。 参考NacosNacos中存在一个Instance对象这个对象中存储了服务的信息。 我们模仿一个编写一个丐版的来存储我们项目的服务实例信息。
Data
Builder
NoArgsConstructor
AllArgsConstructor
public class RpcServiceInstance {/*** 服务名称*/private String serviceName;/*** 服务ip*/private String serviceIp;/*** 服务端口*/private int servicePort;/*** nacos会用到env信息*/private String groupName RpcCommonConstants.DEFAULT_GROUP;/*** 元数据信息*/private MapString,String metadata new ConcurrentHashMap();}同时我们提供接口为用户提供自定义注册中心的接口功能这样子用户就能按照自己的需要来实现注册中心了。
public interface RegisterService {default void init(){}void register(RpcServiceInstance instance);default void unregister(RpcServiceInstance instance){}RpcServiceInstance discovery(RpcServiceInstance instance);
}有了注册中心服务实例的定义接下来我们就需要思考如何在项目启动的时候扫描所有的Bean对象并且将存在有对应RpcServiceDeclaration注解的服务信息注册到注册中心上去了。 而RpcServiceDeclaration的使用在Server端因为Server端负责提供我们的服务定义信息所以这里我们先开始编写一下Server端口。