Java开发人员必知的常用类库,这些你都知道吗?( 四 )


文档:https://cloud.spring.io/spring-cloud-config/reference/html/
3.Apollo
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景 。
github:https://github.com/ctripcorp/apollo
限流1.Guava RateLimiter
RateLimiter基于令牌桶算法,即以用户设定的恒定速率向令牌桶内放置令牌,用户来执行任务时,只有拿到令牌才能执行 。
2.Sentinel
Sentinel是面向分布式服务架构的高可用防护组件,主要以流量为切入点,从流量控制、熔断降级、系统自适应保护等多个维度来帮助用户保障微服务的稳定性 。
官网:https://sentinelguard.io/
github:https://github.com/alibaba/Sentinel
熔断降级当调用链路中某个资源出现不稳定,例如,表现为timeout,异常比例升高的时候,则对这个资源的调用进行限制,并让请求快速失败,避免影响到其它的资源,最终产生雪崩的效果 。
1.Sentinel
Sentinel通过并发线程数进行限制和通过响应时间对资源进行降级两种手段对资源调用进行限制,让请求快速失败,避免影响到其它的资源 。
官网:https://sentinelguard.io/
github:https://github.com/alibaba/Sentinel
2.Hystrix
Hystrix 通过线程池的方式,来对资源进行了隔离 。这样做的好处是资源和资源之间做到了最彻底的隔离 。缺点是除了增加了线程切换的成本,还需要预先给各个资源做线程池大小的分配 。Hystrix不再处于主动开发中,并且当前处于维护模式,官方推荐使用Resilience4j替代 。
github:https://github.com/Netflix/Hystrix
3.Resilience4j
Resilience4j是受Netflix Hystrix启发的轻量级容错库,但专为Java 8和函数式编程而设计 。轻巧,因为该库仅使用Vavr,而Vavr没有任何其他外部库依赖项 。
github:https://github.com/resilience4j/resilience4j
分库分表1.Apache ShardingSphere
Apache ShardingSphere定位为关系型数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库 。支持数据分片、读写分离、多数据副本、数据加密、影子库压测等功能 。
官网:https://shardingsphere.apache.org/
github:https://github.com/apache/shardingsphere
2.Mycat
Mycat是数据库分库分表中间件 。
官网:http://www.mycat.org.cn/
github:https://github.com/MyCATApache
序列化1.Kryo
Kryo是用于Java的快速高效的二进制对象图序列化框架 。该项目的目标是高速,小尺寸和易于使用的API 。每当需要将对象持久保存到文件,数据库还是通过网络时,该项目都是有用的 。
github:https://github.com/EsotericSoftware/kryo
2.Hessian
Hessian是一款支持多种语言进行序列化操作的框架技术,同时在进行序列化之后产生的码流也较小,处理数据的性能方面远超于java内置的jdk序列化方式 。
官网:http://hessian.caucho.com/
3.Protobuf
【Java开发人员必知的常用类库,这些你都知道吗?】Protobuf是谷歌开源的一个灵活的、高效的用于序列化数据的协议 。相比较XML和JSON格式,protobuf更小、更快、更便捷 。
github:https://github.com/protocolbuffers/protobuf
官网:https://developers.google.com/protocol-buffers/
RPC框架1.Dubbo Apache Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现 。
官网:http://dubbo.apache.org/zh-cn/
github:https://github.com/apache/dubbo
2.Thrift Thrift是一个软件框架(远程过程调用框架),用来进行可扩展且跨语言的服务的开发 。它结合了功能强大的软件堆栈和代码生成引擎,以构建在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml这些编程语言间无缝结合的、高效的服务 。Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器,现在是 Apache 基金会的顶级项目 。Thrift允许你定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言 。
官网:http://thrift.apache.org/
3.gRPC gRPC是一个现代的、开源的、高性能的远程过程调用(RPC)框架,可以在任何地方运行 。gRPC使客户机和服务器应用程序能够透明地通信,并简化了连接系统的构建 。目前提供C、Java和Go语言版本,分别是:grpc, grpc-java, grpc-go. 其中C版本支持C, C++, Node.js, Python, Ruby, Objective-C, PHP和C#支持 。


推荐阅读