Spring Cloud Bus

Spring Cloud Bus

Spring Cloud Bus 通过一个轻量级消息代理连接分布式系统的节点。这可以用于广播状态更改(如配置更改)或其他管理指令。当前唯一的实现方式是通过一个AMQP代理作为消息传输,但相同的基本特征(传输上的一些依赖)是其他传输的路线图

Quick Start

如果Spring Cloud Bus在类路径里它将通过Spring Boot autconfiguration启动。所有你需要做的就是使spring-cloud-starter-bus-amqpspring-cloud-starter-bus-kafka添加到你的依赖管理中,Spring Cloud将完成剩下的事。确定broker (RabbitMQ or Kafka) 可用:如果在本地运行你不需要做任何事,但如果在远程运行需要配置broker信息,如Rabbit

查看更多

Spring Cloud Feign中文翻译

声明式REST客户端:Feign

Feign是一个声明式Web Service客户端。使用Feign能让编写Web Service客户端更加简单, 它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可拔插式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了Spring MVC标准注解和HttpMessageConverters。Feign可以与Eureka和Ribbon组合使用以支持负载均衡。

主类示例:

1
2
3
4
5
6
7
8
9
10
11
12
@Configuration
@ComponentScan
@EnableAutoConfiguration
@EnableEurekaClient
@EnableFeignClients
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}

查看更多

Spring Cloud Sleuth中文翻译

Spring Cloud Sleuth

SpringCloudSleuth提供了分布式追踪的解决方案。

术语

SpringCloudSleuth 借用了 Dapper 的术语

  • Span: 基本工作单元,例如,在一个新建的span中发送一个RPC等同于发送一个回应请求给RPC,span通过一个64位ID唯一标识,trace以另一个64位ID表示,span还有其他数据信息,比如摘要、时间戳事件、关键值注释(tags)、span的ID、以及进度ID(通常是IP地址)
    span在不断的启动和停止,同时记录了时间信息,当你创建了一个span,你必须在未来的某个时刻停止它。

Tips:root span的SpanID和TraneID相等。

查看更多

Spring Cloud Stream

Spring Cloud Stream

这一节将更详细地介绍如何使用SpringCloudStream工作,它涵盖主题了创建和运行Stream应用。

简介

SpringCloudStream是一个构建消息驱动的微服务框架。SpringCloudStream构建在SpringBoot之上用以创建工业级的应用程序,并且Spring Integration提供了和消息代理的连接。SpringCloudStream提供几个厂商消息中间件个性化配置,引入发布订阅、消费组和分区的语义概念。

添加@EnableBinding注解在你的程序中,被@StreamListener修饰的方法可以立即连接到消息代理接收流处理事件。下面是一个简单的接收外部消息的接收器应用程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@SpringBootApplication
public class StreamApplication {
public static void main(String[] args) {
SpringApplication.run(StreamApplication.class, args);
}
}
@EnableBinding(Sink.class)
public class TimerSource {
...
@StreamListener(Sink.INPUT)
public void processVote(Vote vote) {
votingService.recordVote(vote);
}
}

查看更多

Eclipse for Mac 快捷键

摘要:本文主要介绍了Mac下Eclipse的常用快捷键,开发环境切换到Mac下后原来Window下的快捷键很大一部分是不相容的,一方面不熟悉快捷键会导致开发效率明显降低,另一方面频繁录入错误的快捷键IDE也一脸懵逼,方便速查记录如下,尤其像我习惯了Eclipse IDE。

查看更多

数据库连性池性能测试(hikariCP,druid,tomcat-jdbc,dbcp,c3p0)

摘要: 本文主要是对这hikariCP,druid,tomcat-jdbc,dbcp,c3p0几种连接池的详细的功能和性能测试对比,通过这次测试对目前主流的一些连接池做一个全面的对比,从而给业务系统一个最佳的推荐。而唯品会venus-data支持三种连接池DBCP、C3P0、DRUID,其中C3P0作为默认的连接池。因此需要针对现状,研发一种分布式数据库连接池。

查看更多

爱油科技基于SpringCloud的微服务实践

爱油科技基于SpringCloud的微服务实践

个人简介

刘思贤(微博@starlight36),爱油科技架构师、PMP。主要负责业务平台架构设计,DevOps实施和研发过程持续改进等,关注领域驱动设计与微服务、建设高效团队和工程师文化培养。

摘要

本次分享主要介绍了爱油科技基于Docker和Spring Cloud将整体业务微服务化的一些实践经验,主要包括:

  • 微服务架构的分层和框架选型
  • 服务发现和配置管理
  • 服务集成和服务质量保证
  • 基于领域驱动设计
  • 实施DevOps

    查看更多

Spring Cloud Eureka服务下线(Cancel)源码分析

摘要:在本篇文章中主要对Eureka的Cancel(服务下线)进行源码分析,在Service Provider服务shut down的时候,需要及时通知Eureka Server把自己剔除,从而避免其它客户端调用已经下线的服务,导致服务不可用。

Cancel(服务下线)

概述

在Service Provider服务shut down的时候,需要及时通知Eureka Server把自己剔除,从而避免客户端调用已经下线的服务。

服务提供者端源码分析

  1. 在eureka-client-1.4.1中的com.netflix.discovery.DiscoveryClient中shutdown()的867行。

    查看更多

Spring Cloud Eureka服务续约(Renew)源码分析

摘要:在本篇文章中主要对Eureka的Renew(服务续约),从服务提供者发起续约请求开始分析,通过阅读源码和画时序图的方式,展示Eureka服务续约的整个生命周期。服务续约主要是把服务续约的信息更新到自身的Eureka Server中,然后再同步到其它Eureka Server中。

Renew(服务续约)

概述

Renew(服务续约)操作由Service Provider定期调用,类似于heartbeat。目的是隔一段时间Service Provider调用接口,告诉Eureka Server它还活着没挂,不要把它T了。通俗的说就是它们两之间的心跳检测,避免服务提供者被剔除掉。
请参考:Spring Cloud Eureka名词解释

查看更多

服务治理中间件之版本策略

在部署服务并向不同的客户端提供服务时,我们会涉及到一个版本的策略问题。

其核心内容是在多版本的情况下如何协调和制约不同版本的服务器和客户端: 如何规范版本之间的选择问题,当实现和接口发生变化时版本应该如何演进。

在本文中,我们将介绍业界常见的几种版本策略,我们面对的需求,以及我们最终在dolphin项目中选择的策略。然后会详尽的介绍该版本策略的实现细节和使用方式。

查看更多