您的位置:首页 > 新闻 > 热点要闻 > 十八大禁用黄app软件入口_邵东网页定制_seo基础入门免费教程_有什么可以做推广的软件

十八大禁用黄app软件入口_邵东网页定制_seo基础入门免费教程_有什么可以做推广的软件

2024/10/31 19:19:59 来源:https://blog.csdn.net/liuzhenghua66/article/details/143023964  浏览:    关键词:十八大禁用黄app软件入口_邵东网页定制_seo基础入门免费教程_有什么可以做推广的软件
十八大禁用黄app软件入口_邵东网页定制_seo基础入门免费教程_有什么可以做推广的软件

分析dubbo不同版本的服务定义语法,用于从代码中提取接口文档。

通信协议

Dubbo 作为一款 RPC 框架内置了高效的 RPC 通信协议,帮助解决服务间的编码与通信问题,目前支持的协议包括:

  • triple,基于 HTTP/1、HTTP/2 的高性能通信协议,100% 兼容 gRPC,支持 Unary、Streming 等通信模式;支持发布 REST 风格的 HTTP 服务。
  • dubbo,基于 TCP 的高性能私有通信协议,缺点是通用性较差,更适合在 Dubbo SDK 间使用;
  • 任意协议扩展,通过扩展 protocol 可以之前任意 RPC 协议,官方生态库提供 JsonRPC、thrift 等支持。

triple 协议支持以 rest 风格发布标准的 http 服务,框架中已经移除了独立的rest protocol实现。

参数序列化

对于dubbo或者triple协议,统一序列化成json数组。如[1, “hello”, {“name”: “zhangsan”}]
对于rest协议,按照http方案去解析接口,不认定为dubbo。

Dubbo服务定义方式

1. 基于 Java Interface 的标准 Dubbo 服务定义

使用@DubboService注解进行服务定义
@Service 注解从 3.0 版本开始就已经废弃,改用 @DubboService,以区别于 Spring 的 @Service 注解

public interface DemoService {String sayHello(String name);
}@DubboService
public class DemoServiceImpl implements DemoService {@Overridepublic String sayHello(String name) {return "Hello " + name;}
}

使用@Service注解进行服务定义
2.x版本可以使用 @Service 注解进行服务定义(注意不是spring的)
@com.alibaba.dubbo.config.annotation.Service
@org.apache.dubbo.config.annotation.Service

import com.alibaba.dubbo.config.annotation.Service;@Service
public class AnnotationHelloServiceImpl implements HelloService {public String sayHello(String name) {System.out.println("greeting service received: " + name);return "hello, " + name;}}

2. 使用 Java Config进行服务定义

@Configuration
public class ProviderConfiguration {@Beanpublic ServiceBean demoService() {ServiceBean service = new ServiceBean();service.setInterface(DemoService.class);service.setRef(new DemoServiceImpl());service.setGroup("dev");service.setVersion("1.0.0");Map<String, String> parameters = new HashMap<>();service.setParameters(parameters);return service;}
}

3. 使用XML进行服务定义

不同的dubbo版本,可能dubbo XML的namespace会不同:

  • http://code.alibabatech.com/schema/dubbo
  • http://dubbo.apache.org/schema/dubbo
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xmlns="http://www.springframework.org/schema/beans"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"><!-- provider's application name, used for tracing dependency relationship --><dubbo:application name="demo-provider"/><!-- use multicast registry center to export service --><dubbo:registry address="multicast://224.5.6.7:1234"/><!-- use dubbo protocol to export service on port 20880 --><dubbo:protocol name="dubbo" port="20880"/><!-- service implementation, as same as regular local bean --><bean id="demoService" class="org.apache.dubbo.demo.provider.DemoServiceImpl"/><!-- declare the service interface to be exported --><dubbo:service interface="org.apache.dubbo.demo.DemoService" ref="demoService"/></beans>

4. 使用API定义

使用 API 启动 dubbo(DubboBootstrap.start) 时定义服务

public class Application {public static void main(String[] args) {DubboBootstrap.getInstance().protocol(new ProtocolConfig(CommonConstants.TRIPLE, 50051)).service(ServiceBuilder.newBuilder().ref(new DemoServiceImpl()).build()).start().await();}
}

启动后动态注册服务

public static void main(String[] args) {ServiceConfig<DemoService> demoServiceConfig = new ServiceConfig<>();demoServiceConfig.setInterface(DemoService.class);demoServiceConfig.setRef(new DemoServiceImpl());demoServiceConfig.setVersion("1.0.0");demoServiceConfig.export(); // this service will be registered to the default instance of DubboBootstrap.getInstance()
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com