3 鲸临于空

尚未进行身份认证

喜欢喝咖啡,java的那种

等级
博文 64
排名 3w+

最强大的Docker插件 fabric8io/docker-maven-plugin

fabric8io的插件不仅支持docker镜像构造(build),镜像推送(push),还支持对容器操作(如run,stop,remove等),也就是说它可以实现对Docker从构建镜像到运行和推送完整的控制流程,这是它独树一帜的地方.在众多docker-maven插件中,fabric8io的docker-maven-plugin毫无疑问是最强大的.现在网上相关的教程大多是使用spoti...

2019-01-18 00:53:26

深入解析Spring使用枚举接收参数和返回值机制并提供自定义最佳实践

本文的目的在于提供一种在restful接口兼容使用code接收枚举参数的实现方案。文章目录一目标与思路0起因1目标2思路二代码实现1通用code枚举接口2转换器工厂类3SpringMVC配置类三相关知识一目标与思路0起因《阿里巴巴Java开发手册》将接口中枚举的使用分为两类,即接口参数和接口返回值,并规定:接口参数可以使用枚举类型,但接口返回值不可以使用枚举...

2019-01-14 09:54:10

Paxos学习笔记及图解

一从CAP定理到Paxos算法1CAP定理CAP定理是相对于一个分布式计算系统而言的,首先需要了解C、A、P的定义:C:Consistency一致性:所有节点持有相同最新数据副本(对外一致)A:Availability可用性:所有节点都能提供数据副本,但不一定最新(对外可用,但不一定好用)P:Partitiontolerance分区容错性:分区即指系统在一定的通信时限内不能...

2019-01-10 13:49:08

Java 设计模式 轻读汇总版

一创建类模式1单例模式2简单工厂和工厂模式3抽象工厂模式4建造者模式5原型模式二结构类模式1代理模式2适配器模式3装饰模式4门面模式5桥接模式6组合模式7享元模式三行为类模式1策略模式2观察者模式3责任链模式4模板方式模式5状态模式6迭代器模式7命令模式8备忘录模式9访问者模式10中介者模式11解...

2018-12-24 22:26:39

从零写分布式RPC框架 系列 2.0 (4)使用BeanPostProcessor实现自定义@RpcReference注解注入

之前服务提供方RpcServer我们是使用ApplicationContextAware来扫描@RpcService注解,添加一个注解即可实现服务暴露。现在,我们用BeanPostProcessor来实现服务注入,自动将服务实现类注入到被@RpcReference注解标记的接口上。首先我会先介绍BeanPostProcessor的相关信息,以及有所了解的直接跳到第二部分即可。...

2018-12-01 16:42:35

从零写Spring注解版框架系列 IoC篇 (2)实现 @Component、@Autowired、@Qualifier注解

一结构设计首先创建一个Maven工程winter-core,这里我们我们只需要依赖于commons-lang工具包,另外还有测试用的junit包。再创建各个类如下:核心注解在annotation包下,util包下是ClassUtil工具类和StringUtil工具类,真正的核心组件是BeanFactory下的ClassPathAnnotaionAppli...

2018-11-30 22:28:55

从零写Spring注解版框架系列 IoC篇 (1) 框架设计

一设计思想1IoC的定义IoC全称为InversionofControl,翻译为“控制反转”,它还有一个别名为DI(DependencyInjection),即依赖注入。所谓IoC,就是由SpringIoC容器来负责对象的生命周期和对象之间的关系2Spring中的IoC模块结构传统xml模式下的Spring实现IoC由几个模块组成:Resourc...

2018-11-30 18:34:59

从零写分布式RPC框架 系列 2.0 (3)RPC-Server和RPC-Client模块改造

2.0版本RPC-Server改动不大,主要变化在于RPC-Client使用了服务地址缓存,并引入监控机制,第一时间获取zk集群中服务地址信息变化并刷新本地缓存。另外,RPC-Client还使用了RpcClientProperties开放对负载均衡策略和序列化策略的选择。系列文章:专栏:从零开始写分布式RPC框架手写通用类型负载均衡路由引擎(含随机、轮询、哈希等及其带权形式)实现序列化引...

2018-11-23 16:27:45

从零写分布式RPC框架 系列 2.0 (2)RPC-Common模块设计实现

RPC-Common模块相对于1.0版本复杂了很多,最主要的变化在于将Rpc的Netty处理器从RPC-Server和RPC-Client收回。1.0版本的设计思路是尽可能减少冗余依赖,所以RPC-Common一般只放通用的功能。现在则是尽可能都放在RPC-Common模块,以方便工程升级复杂化后的统一协调管理。以后功能将集中在一个模块下(名字不一定还是RPC-Common),RPC-Serv...

2018-11-23 14:16:43

从零写分布式RPC框架 系列 2.0 (1)架构升级

针对1.0版本的性能问题,本版本做了从服务地址列表缓存等方面做了优化处理,并加入负载均衡引擎、序列化引擎、服务端限流等新功能,并对通信模型进行改造,使其支持新特性、避免粘包半包问题并对后续升级改造留下支持空间。具体可见项目GitHub地址。本文将介绍2.0版本的逻辑架构和模型设计,部分内容在从零写分布式RPC框架系列1.0(1)架构设计已有说明,此处不再赘述。0版本说明增...

2018-11-23 10:40:54

实现 序列化引擎(支持 JDK默认、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列化方式)

本文将实现一个包含JDK默认、Hessian、Json、Protostuff、Xml、Avro、ProtocolBuffer、Thrift等序列化方式的序列化引擎。用户可以提供使用SerializerEngine方便快捷地切换序列化方法实现。文章目录一使用效果二总体结构1结构图2组件介绍序列化方法分类序列化方法场景推荐3相互关系三结构实现1ISerializer2Serial...

2018-11-18 16:37:13

手写通用类型负载均衡路由引擎(含随机、轮询、哈希等及其带权形式)

本文记录了通用类型负载均衡路由引擎(工厂)的实现过程和思路。通过路由引擎获取指定枚举类型的负载均衡器,降低了代码耦合,规范了各个负载均衡器的使用,减少出错的可能,并简化了其对应带权负载均衡的实现(提供默认实现),而无需另外编写和集成。文章目录一使用效果二总体结构1结构图2组件介绍3相互关系三结构实现1RouteStrategy2WeightGetAble3WeightUtil4...

2018-11-15 20:34:31

从零写分布式RPC框架 系列 1.0 (5)整合测试

本篇将对前面几篇文章作整合处理,使用spring-boot-starter的形式进行发布。

2018-11-08 18:05:26

从零写分布式RPC框架 系列 1.0 (4)RPC-Client模块设计实现

RPC-Client模块负责创建动态代理对象供服务消费者使用,而动态代理对象的方法执行则是通过RPC调用RPC-Server的服务实现。即RPC-Client屏蔽了底层的通信过程,使得服务消费者可以基于接口透明使用服务提供者的服务。一介绍1整体结构2模块介绍整体结构如下:RpcClientRPC-Client模块核心类,也是服务消费者会直接使用到的类。该类负责根据传入...

2018-11-08 14:46:48

从零写分布式RPC框架 系列 1.0 (3)RPC-Server模块设计实现

RPC-Server模块负责(1)将@RpcService注解标记的服务和自身信息注册到ZK集群,(2)对外提供RPC服务实现,处理来自RPC-Client的请求。该模块整体的核心类为RpcServer,而真正处理请求的核心类是RpcServerHandler。另外还有一个ZKServiceRegistry负责和ZK集群交互。一介绍1整体结构2模块介绍注意,因为最终是...

2018-11-07 21:20:32

从零写分布式RPC框架 系列 1.0 (2)RPC-Common模块设计实现

RPC-Common模块提供RPC-Server和RPC-Client的通用对象,封装统一规则,使RPCServer和RPCClient可以基于同一协议通信。主要包含底层通信的Netty所需的编码解码器(RpcEncoder,RpcDecoder),实现自定义协议的传输对象(RpcRequest、RpcResponse)以及编码解码器对Java对象序列化(反序列化)使用的工具ProtoSe...

2018-11-07 13:04:59

依赖排除 provided,optional 和 exclusion 最全区分指南

本文将介绍Maven工程中3种避免依赖冲突的手段provided,optional和exclusion及其使用场景,并对其进行比较区分,最后以一个应用实例来做归纳总结。本人在网上寻找相关说明时大多语焉不详,模棱两可,有些甚至自己也没弄明白,故根据官方说明和自身试验写下此文,如有纰漏,还望指教。转载需经本人同意,注明出处方可转载。文章目录一介绍1scope设为provided2op...

2018-11-06 14:23:13

从零写分布式RPC框架 系列 1.0 (1)架构设计

本系列文章的目的是搭建出一个基于Netty,Zookeeper和SpringBoot的简易分布式RPC框架,并且发布到Maven中央仓库以spring-boot-starter的形式对外提供开箱即用的服务。1.0版本使用protobuf来做序列化,最终的使用形式比较接近于Dubbo。最终效果可见:https://github.com/linshenkx/rpc-netty-sprin...

2018-11-06 12:40:02

使用gpg插件发布jar包到Maven中央仓库 完整实践

本文记录了在maven环境下使用gpg插件将jar包部署到中央仓库的完整实践过程。相对于网上其他教程使用oss-parent作为父工程的方法,这种方法入侵度低,自由度高,也是官方推荐使用的。实践过程解决了gpg验证以及javadoc注解不规范的问题。文章目录先行知识1.项目基础配置2.Maven发布相关网址一注册并提交工单(registersonatype)二使用gpg生成密钥三...

2018-11-03 18:55:51

SonarQube学习系列2:Maven+SonarQube 最佳实践

本文记录了Maven工程使用SonarQube完成代码评估,并对其中指定模块进行排除和项目权限管理等有些代码是使用相关插件或工具生成的,这些代码通常存在高冗余或书写不规范现象,不符合代码质量要求,但不影响使用,应排除在代码质量评估之外本文基于上一篇文章的基础配置本文将通过一个gRPC项目作为例子,该项目有eureka-server,lib,provider,consumer4个模块,其中...

2018-10-22 12:36:50
奖章
  • Github
    Github
    绑定github第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!