Service Comber笔记

转载 :https://blog.csdn.net/zengdongwen/article/details/93486257

Service Comb :

1、Service Center是一个具有微服务实例注册/发现能力的微服务组件,服务者可将自身实例信息注册到Service Center 以便消费者发现 使用它。
Service Center除了解决服务的注册/发现外,Service Center还拓展了依赖关系、黑白名单、依赖管理等特性。
下载Service Center注册中心,启动frontend.exe 和 service-center.exe。默认服务中心前台地址为http://127.0.0.1:30103/、后台地址为http://127.0.0.1:30100/ 启动后即可访问查看服务中心实例。
2、java Chassis 是java微服务框架,支持多种开发方式,REST(JAX-RS、Spring MVC)和RPC。拥有高性能、开箱即用的服务治理能力,包括(服务发现、熔断容错、负载均衡等)。
java Chassis:
//在消费者和提供者中分别增加
Pom:

<!--hibernate校验规则-->
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-validator</artifactId>
</dependency>

<!--rest支持-->
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-rest</artifactId>
</dependency>

<!--ServiceComb提供的支持-->
<dependency>
     <groupId>org.apache.servicecomb</groupId>
     <artifactId>spring-boot-starter-provider</artifactId>
</dependency>

<!--流量控制策略 支持-->
<dependency>
    <groupId>org.apache.servicecomb</groupId>
    <artifactId>handler-flowcontrol-qps</artifactId>
    <version>1.0.0-m1</version>
</dependency>

Spring Boot启动类
//启动类增加@EnableServiceComb注解,该注解表明这是一个service Comb应用
//启用java.chassis核心功能。

@SpringBootApplication
@EnableServiceComb
//@EnableZuulProxy
public class ApplicationConsumer {
    public static void main(String[] args) {
        SpringApplication.run(ApplicationConsumer.class,args);
    }
}

java Chassis配置:
//在resources目录下面创建microservice.yaml配置文件,里面的内容如下

APPLICATION_ID: demo
service_description:
  name: demo-provider	#名字每个服务自己定义
  version: 1.0.0
servicecomb:
  rest:
    address: 0.0.0.0:9000	#该端口不可被占用
  service:
    registry:
      address: http://127.0.0.1:30100

调用方式:
一、 Rest协议调用服务

@RestSchema(schemaId = "serviceCombDemoRest") //ID不要重复
@RequestMapping("/")
public class ConsumerController implements HelloWorldInterfaces {
    //定义远程访问的RestTemplate
    private final RestTemplate restTemplate = RestTemplateBuilder.create();
    @GetMapping("request")
    @Override
    public String sayHello(String name) {
        //service url is : cse://serviceName/operation
        // provider是 serviceprovider项目中的microservice.yaml 里面的        name 微服务名称  
        String serviceName = "demoProvider";
        String result = restTemplate.getForObject
		("cse://" + serviceName + "/hello?name=" + name, String.class);
        return result;
    }
}

二、 Rpc协议调用

@RpcSchema(schemaId = "testCalculateRpc") //注解不同
@RequestMapping("/testCalculate")
public class TestCalculateController {
//通过Rpc协议远程调用rest协议的接口,
// microserviceName是微服务提供者的名称,在服务提供者的microservice.yaml文件中配置的service_description:name 、schemaId是微服务提供者的schemaId,在服务提供者的controller定义的时候@RpcSchema(schemaId = "sum")
@RpcReference(microserviceName = "demoProvider",schemaId = "sum") //特别注意此处的microserviceName 和 schemaId

TestCalculateInterface testCalculateInterface;
    
@GetMapping("/testSum")
public String testSum(Double a,Double b){
    Double testSum = testCalculateInterface.testSum(a, b);
     SimpleDateFormat simpleDateFormat = 
		new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
     return simpleDateFormat.format(new Date()) + ":::::::" + testSum.toString();
    }
}

服务提供者样例:

//注意此处注解中schemaId参数,在消费者使用Rpc协议调用时需要该参数。
@RpcSchema(schemaId = "sum")	
//@RequestMapping(value = "/calculate")
public class CalculateController implements TestCalculateInterface {
    @Autowired
    private ISumService sumService;

    @Override
    public Double testSum(Double testA, Double testB){
        return sumService.calculateSum(testA, testB);
    }
}

Java Chassis 相关配置(负载均衡、流量控制、服务治理等)
参考:http://servicecomb.apache.org/cn/docs/products/java-chassis/distributed-tracing/
---------------------------这里自己去参考链接的官方文档。我没试-------------------

APPLICATION_ID: serviceCombDemo
service_description:
  name: demoProvider
  version: 1.0.0
  environment: development  #隔离的能力(当前支持development和production),允许处于development环境的微服务在不升级版本的情况下,仅需重启服务即可重新注册契约到服务中心。
servicecomb:
  rest:
    address: 0.0.0.0:9000
  service:
    registry:
      address: http://127.0.0.1:30100
  handler:
    chain: #配置负载均衡
#      Consumer:
#        default: loadbalance,qps-flowcontrol-consumer #,fault-injection-consumer,bizkeeper-consumer #配置负载均衡
      Provider:
        default: qps-flowcontrol-provider, #流量控制
      tracing:
        enabled: true
        samplingRate: 0.5
        loadbalance:    #负载均衡策略
          userDefinedEndpoint.enabled: true
          strategy:
            name: RoundRobin  #Support RoundRobin Random WeigthedResponse SessionStickiness
          retryEnabled: true  #支持配置失败重试策略
          retryOnSame: 1
          retryOnNext: 1
          filter.status.enabled: false
  #限流相关配置
  flowcontrol:
    Provider:   #服务端限流
      qps:
        enabled: true
        global:
          limit: 0  #全局限流,默认是最大值
        limit:
          demoConsumer: 1 #对单个consuer服务进行限流,默认无,如果有要求需要添加(此处对名为demoConsumer 的消费者进行限流)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值