01前言
开源项目起初由国外一些工程师发起,最著名的开源社区及私有软件项目的托管平台GitHub,由国外Chris Wanstrath创办从一个开发者社区变成了一个免费开源代码托管平台;国内越来越多的公司把自研的一些优秀开源框架贡献出来,阿里巴巴、腾讯、百度、网易、当当、携程等公司都有在github上开源一些优秀的项目。其中阿里巴巴的的开源项目很多,几乎国内所有公司都用过阿里巴巴的一些项目,耳熟能详的如:druid、fastjson。分布式流行的当下,阿里也有众多分布式开源项目,今天主要搜罗一下阿里分布式开源项目。
02分布式RPC服务框架Dubbo
pache Dubbo (incubating) |是阿里巴巴的一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。国内很多中小公司都在用阿里巴巴的dubbo框架构建分布式项目。
https://github.com/alibaba/dubbo
03Spring Cloud Alibaba
分布式应用服务开发的一站式解决方案Spring Cloud Alibaba,是阿里巴巴基于Spring Cloud并在其基础之上添加阿里自己的组件进行的升级和改造,项目包含开发分布式应用服务的必需组件,方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。使用 Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将 Spring Cloud 应用接入阿里分布式应用解决方案,通过阿里中间件来迅速搭建分布式应用系统。使用过SpringCloud开发的同学,不会对SpringCloudAlibaba陌生。
https://github.com/spring-cloud-incubator/spring-cloud-alibaba
04Nacos
Nacos是阿里巴巴研发的一个集注册中心与配置中心于一体的管理平台。Nacos提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
https://nacos.io/en-us/
05高可用流量管理框架Sentinel
Sentinel 是阿里开源的一个面向微服务的轻量级流量控制框架,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。只要通过 Sentinel API 定义的代码,就是资源,能够被 Sentinel 保护起来。大部分情况下,可以使用方法签名,URL,甚至服务名称作为资源名来标示资源。
https://github.com/alibaba/Sentinel
06分布式链路追踪中间件SOFATracer
分布式链路追踪解决方案有很多,SOFATracer 是阿里开源的一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等。
https://github.com/alipay/sofa-tracer
07高性能 Java RPC 框架SOFARPC
阿里开源的RPC框架除了Dubbo外还有蚂蚁金服的SOFARPC ,SOFARPC是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。
https://github.com/alipay/sofa-rpc
08分布式消息领域标准OpenMessaging
OpenMessaging 是由阿里巴巴发起,与雅虎、滴滴出行、Streamlio 公司共同参与创立,旨在创立厂商无关、平台无关的分布式消息及流处理领域的应用开发标准。
https://github.com/openmessaging/openmessaging-java
09P2P 文件分发系统Dragonfly
Dragonfly(蜻蜓)是阿里自研的 P2P 文件分发系统,用于解决大规模文件分发场景下分发耗时、成功率低、带宽浪费等难题。大幅提升发布部署、数据预热、大规模容器镜像分发等业务能力。开源版的 Dragonfly 可用于 P2P 文件分发、容器镜像分发、局部限速、磁盘容量预检等。它支持多种容器技术,对容器本身无需做任何改造,镜像分发比 natvie 方式提速可高达 57 倍,Registry 网络出流量降低99.5%以上。我们公司就用这款项目用于日志存储和搜索非常方便。
https://github.com/alibaba/Dragonfly
10基于 Spring Boot的研发框架SOFABoot
SOFABoot 是蚂蚁金服开源的基于 Spring Boot 的研发框架,它在 Spring Boot 的基础上,提供了诸如 Readiness Check,类隔离,日志空间隔离等等能力。在增强了 Spring Boot 的同时,SOFABoot 提供了让用户可以在 Spring Boot 中非常方便地使用 SOFAStack 相关中间件的能力。
https://github.com/alipay/sofa-boot
11分布式数据层TDDL
在分布式系统中,经常需要实现读写分离,动态数据库配置等;配套数据库实现分布式系统的一些解决方案,TDDL 是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。
https://github.com/alibaba/tb_tddl
12轻量级分布式数据访问层CobarClient
MyBatis相信大家都用过,持久层中间件,具有多级缓存实现配套Spring/SpringBoot插件使用更方便;Cobar Client是一个轻量级分布式数据访问层(DAL)基于iBatis(已更名为MyBatis)和Spring框架实现。
https://github.com/alibaba/cobarclient
13redis 的 java 客户端Tedis
Redis是一个非常实用和高效的NoSQL(非关系型数据库)能够有效解决系统和数据库之间的一些访问压力,并且提供一些其他更重要的功能如:分布式锁的实现等。Tedis 是另一个 redis 的 java 客户端。Tedis 的目标是打造一个可在生产环境直接使用的高可用 Redis 解决方案。
https://github.com/justified/tedis
总结
在国人开源项目越来越多,科技发展的当下,实力越来越强大,了解并参与到开源项目中,是每一个技术人的实力认证和骄傲。即使未能参与到开源的项目中去,甚至未能在工作中使用它们 ,至少我们可以去了解这些项目。