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名词解释

查看更多

Spring Cloud中@EnableEurekaClient源码分析

摘要:在这篇文章中主要介绍一下Spring Cloud中的@EnableEurekaClient注解,从源码的角度分析是如何work的,让大家能了解Spring Cloud如何通过@EnableEurekaClient注解对NetFlix Eureka Client进行封装为它所用。

NetFlix Eureka client简介

NetFlix Eureka client

Eureka client 负责与Eureka Server 配合向外提供注册与发现服务接口。首先看下eureka client是怎么定义,Netflix的 eureka client的行为在LookupService中定义,Lookup service for finding active instances,定义了,从outline中能看到起“规定”了如下几个最基本的方法。
服务发现必须实现的基本类:com.netflix.discovery.shared.LookupService,可以自行查看源码。

Eureka client与Spring Cloud类关系

Eureka client与Spring Cloud Eureka Client类图,如下所示:
类关系图
在上图中,我加了前缀,带有S的是Spring Cloud封装的,带有N是NetFlix原生的。

查看更多

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

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

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

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

查看更多

使用Java Signal将应用程序从LVS中摘除

摘要:本文主要介绍了,如何使用Java Signal和SignalHandler实现,通过Linux 命令实现kill -s BUS pid和kill -s USR2 pid实现不kill应用进程,把应用程序从LVS中摘除。而不是通过Reset 请求调用。由于只允许本机操作,所以可选方案三种:1.reset 调用更改Status,2.Linux 信号量传递给Java程序 3.配置中心或者XX管理系统后台权限管理,调用reset服务。从安全性和快速解决需求的角度考虑使用Linux 信号量传递给Java程序方案。

Java Signal 概述

信号简介

信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。通俗来讲,信号就是进程间的一种异步通信机制。
典型的例子:kill -s SIGKILL pid (即kill -9 pid) 立即杀死指定pid的进程。
在上面这个例子中,SIGKILL就是往pid进程发送的信号。

查看更多

Spring Cloud Eureka服务注册源码分析

摘要:在上一篇中,介绍了Eureka的相关的知识,解释了Eureka为什么适合做服务发现和注册。接下来,在本篇文章将通过源码分析的方式,看一下Eureka是怎么work的。本章主要介绍Eureka的服务注册。那eureka client如何将本地服务的注册信息发送到远端的注册服务器eureka server上。通过下面的源码分析,看出Eureka Client的定时任务调用Eureka Server的Reset接口,而Eureka接收到调用请求后会处理服务的注册以及Eureka Server中的数据同步的问题。

服务注册

服务注册,想必大家并不陌生,就是服务提供者启动的时候,把自己提供的服务信息,例如 服务名,IP,端口号,版本号等信息注册到注册中心,比如注册到ZK中。那eureka client如何将本地服务的注册信息发送到远端的注册服务器eureka server上。通过下面的源码分析,看出服务注册可以认为是Eureka client自己完成,不需要服务本身来关心。

Eureka Client的定时任务调用Eureka Server的提供接口

实现思路其实也挺简单,在com.netflix.discovery.DiscoveryClient启动的时候,会初始化一个定时任务,定时的把本地的服务配置信息,即需要注册到远端的服务信息自动刷新到注册服务器上。
首先看一下Eureka的代码,在spring-cloud-netflix-eureka-server工程中可以找到这个依赖eureka-client-1.4.11.jar查看代码可以看到,
com.netflix.discovery.DiscoveryClient.java中的1240行可以看到Initializes all scheduled tasks,在1277行,可以看到InstanceInfoReplicator定时任务。

查看更多

Spring Cloud Netflix之Eureka下篇原理

摘要:本文主要介绍Eureka的工作原理,Eureka 组件分为两部分:Eureka serverEureka client。而客户端又分为 Application Service 客户端Application Client 客户端两种。Eureka 的工作机制每个 region 都有自己的 Eureka 服务器集群,每个 zone 至少要有一个 Eureka 服务器以应对 zone 瘫痪。

查看更多