| 
                         api 示例 
- interface LoginService { 
 -   SessionInfo   login(String username, String password); 
 - } 
 -  
 -  
 - public class SessionInfo { 
 -   private String   sessionId; 
 -   private String   username; 
 - } 
 
  
 service 示例 
- @Service  
 -   
 - @Primary  
 -   
 - public class LoginServiceImpl implements LoginService {  
 -   
 -   public SessionInfo   login(String username, String password) {  
 -   
 -          // do login  
 -   
 -   }  
 -   
 - }  
 
  
ServiceComb Endpoint 示例 
服务端: 
- @RpcSchema(schemaId = “LoginServiceEndpoint”) 
 - public class LoginServiceEndpoint implements LoginService   { 
 -   @Autowired 
 -   private   LoginService service; 
 -  
 -  
 -   public SessionInfo   login(String username, String password) { 
 -          return   service.login(username, password); 
 -   } 
 -  
 -  
 - } 
 
  
客户端: 
- @Bean 
 - public LoginService getLoginService() { 
 -   return   Invoker.createProxy(SERVICE_NAME, "LoginServiceEndpoint", LoginService.class); 
 - } 
 
  
或者 
- @RpcReference(microserviceName=SERVICE_NAME, schemaId=”LoginServiceEndpoint”) 
 - private LoginService loginService; 
 
  
HSF Endpoint 示例 
服务端: 
- @HSFProvider(serviceInterface = LoginService.class,serviceVersion   = "1.0.0")  
 - public class LoginServiceEndpoint implements LoginService   {  
 -   @Autowired  
 -   private   LoginService service;  
 -   
 -   
 -   public SessionInfo   login(String username, String password) {  
 -          return   service.login(username, password);  
 -   }  
 -   
 -   
 - }  
 
  
客户端: 
- @HSFConsumer 
 - private LoginService loginService; 
 
  
从上面的代码示例看,Endpoint 层需要做到尽可能逻辑简单,实现逻辑全部交给 Service 层,只包含接口声明,或者包含必要的数据结构转换逻辑。上面的方式演示了 RPC 的接口声明,还可以加上 REST 标签(Spring MVC,或者 JAX RS),来支持 REST 接口。 
遗留系统的改造策略   
大部分公司都会存在现有系统运行于某一个云上,把现有系统推倒重来,进行全新设计,通常不是一个好主意。遗留系统的改造需要遵循持续迭代,继承性改造的思路。 
以阿里云系统改造为华为云系统为例,将原来基于 HSF 开发的微服务应用改造为基于 ServcieComb 开发的微服务应用。 
按照前面的总体思路,首先需要将原来项目强依赖于 HSF 的代码部分分离出来,建立下面的目录结构: 
    - microservice-api:定义微服务的接口。该目录包含接口定义(interface)、数据结构定义(models)。为了支持不同的微服务框架,对于接口定义和数据结构定义会有一定的要求。
 
    - microservice-service:业务逻辑实现代码。
 
    - microservice-endpoint-hsf:发布为 HSF 的微服务项目。
 
 
这个过程相对而言是简单的,不涉及任何业务逻辑的调整,只是代码目录结构的变化和 POM 依赖关系的调整。调整完成后,可以对现有功能进行简单自动化验证,保证项目自动化测试用例能够通过。调整后的项目功能和遗留系统是一致的,拥有一个始终无损的运行系统,对于功能比较、问题发现都是非常有帮助的。 
项目调整后,就可以增加华为云的项目: 
    - microservice-endpoint-servicecomb:发布为 ServiceComb 的微服务项目。
 
 
这个项目可以复制 microservice-endpoint-hsf,将 POM 依赖改为 ServiceComb 的内容,并将发布的接口(Endpoint)调整为 ServiceComb 的发布方式。 
项目调整后,就可以一份代码构建出两个可执行 jar 包,两个 jar 包分别在华为云和阿里云部署。                         (编辑:泰州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |