Skip to content
upan edited this page Feb 1, 2023 · 60 revisions

Welcome to the cheat sheet!

Github资源汇集

语言

工具

服务器

  • Nginx
  • Tengine, Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。
  • Tomcat, is an open source implementation of the Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket technologies. The Java Servlet, JavaServer Pages, Java Expression Language and Java WebSocket specifications are developed under the Java Community Process.
  • Jetty, Eclipse Jetty provides a Web server and javax.servlet container, plus support for HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations. These components are open source and available for commercial use and distribution.

中间件

缓存服务器

缓存中间件

  • x-pipe

    X-Pipe是由携程框架部门研发的Redis多数据中心复制管理系统。基于Redis的Master-Slave复制协议,实现低延时、高可用的Redis多数据中心复制,并且提供一键机房切换,复制监控、异常报警等功能。

  • Feeyo-RedisProxy

    一个分布式 Redis 解决方案, 上层应用可以像使用单机的 Redis 一样使用, RedisProxy 底层会处理请求的分发,一切对你无感 ~ 内部的服务能力,当前单节点RedisProxy,日处理查询量50亿+, QPS维持在( 50K~80K )

消息队列

  • RocketMQ - 阿里开源分布式消息队列

  • Kafka code

  • Jafka code,一个快速的分布式消息系统,Kafka的Java版本

  • MetaQ code 淘宝开源的类Kafka项目

  • RabbitMQ site

  • Apache ActiveMQ - 实现JMS规范的消息队列

  • Disruptor 是英国外汇交易公司LMAX开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题

数据库中间件

  • MyBatis code Mybatis-3 文档
  • Cobar code,阿里基于MySQL的分布式数据库服务中间件
  • Mycat site,分布式数据库中间件,基于Cobar
  • TDDL(Taobao Distributed Data Layer) code, 主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。
  • MTDDL(Meituan Distributed Data Layer)暂未开源 简介
  • Atlas 是由 Qihoo 360公司Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。
  • DBProxy是由美团点评公司技术工程部DBA团队(北京)开发维护的一个基于MySQL协议的数据中间层。基于360的Atlas。
  • sharding-jdbcsite ,是当当开发的一个轻量级的关系型数据库中间件,提供分库分表、读写分离和柔性事务等功能。

服务化

RPC & 服务治理

  • Spring Cloud ,Spring Cloud 为开发者提供了在分布式系统(如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性 Token、全局锁、决策竞选、分布式会话和集群状态)操作的开发工具。使用 Spring Cloud 开发者可以快速实现上述这些模式。
  • Dubbo code 阿里巴巴开源的分布式服务框架
  • DubboX code,当当在dubbo基础上提供的增强版本
  • Motan code 新浪微博的分布式服务框架
  • Finagle site code,是Twitter基于Netty开发的支持容错的、协议无关的RPC框架
  • Hystrix code,是Netflix 公司开发用来处理依赖隔离的框架,同时也是可以帮我们做依赖服务的治理和监控. 介绍
  • PigeonPigeon是一个分布式服务通信框架(RPC),在大众点评内部广泛使用,是大众点评最基础的底层框架之一。
  • Tars,Tars腾讯开源的基于名字服务使用Tars协议的高性能RPC开发框架,配套一体化的运营管理平台,并通过伸缩调度,实现运维半托管服务。
  • sofa-rpc,SOFARPC 是一个高可扩展性、高性能、生产级的 Java RPC 框架。在蚂蚁金服 SOFARPC 已经经历了十多年及五代版本的发展。SOFARPC 致力于简化应用之间的 RPC 调用,为应用提供方便透明、稳定高效的点对点远程服务调用方案。为了用户和开发者方便的进行功能扩展,SOFARPC 提供了丰富的模型抽象和可扩展接口,包括过滤器、路由、负载均衡等等。同时围绕 SOFARPC 框架及其周边组件提供丰富的微服务治理方案。SOFARPC 最早源于阿里内部的 HSF。

服务发现

  • Zookeeper source 总结
  • Nacos-Naming,Nacos的Naming模块提供了服务注册与发现的能力
  • Consul,Motan在使用,据说官方自己都没大量使用。
  • etcd 是一个应用在分布式环境下的 key/value 存储服务。
  • Eureka,Netflix 开源的服务注册与发现、负载均衡、故障转移的中间件。架构介绍

服务配套工程

配置管理 zk,console

-五大开源配置中心

  • Ctrip Apollo是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。
  • Nacos-Config,Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
  • Spring-Cloud-Config,Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。
  • Disconf,前百度员工开发的分布式配置管理平台

计划任务

主要有以下几种方案:

  • Quartz Scheduler code
  • XXL-Job,xxl-job是由个人开源的一个轻量级分布式任务调度框架 ,主要分为调度中心和执行器两部分,调度中心在启动初始化的时候,会默认生成执行器的RPC代理。目前使用者计较多。
  • Elastic-Job,是一个基于 QuartzZookeeper 分布式调度解决方案,之前为当当开源,后开发人员跳槽京东后变更为独立项目
  • PowerJob,新一代分布式任务调度与计算框架,支持CRON、API、固定频率、固定延迟等调度策略,提供工作流来编排任务解决依赖关系,使用简单,功能强大,文档齐全。作者借鉴了SchedulerX 2.0开发的任务调用系统 。

作者介绍https://cloud.tencent.com/developer/article/1824225, 中文介绍:https://github.com/PowerJob/PowerJob/blob/master/README_zhCN.md

  • TBSchedule淘宝开源的一个简洁的分布式任务调度引擎,开源较早现在貌似已经无人维护
  • Saturn,唯品会开源的一个分布式作业调度平台,文档 >Saturn (任务调度系统)是唯品会开源的一个分布式任务调度平台,取代传统的Linux Cron/Spring Batch Job的方式,做到全域统一配置, >统一监控,任务高可用以及分片并发处理。 >Saturn是在当当开源的Elastic Job基础上,结合各方需求和我们的实践见解改良而成。

分布式发号器

链路跟踪

  • 阿里鹰眼
  • Google的Drapper Drapper中文翻译
  • 大众点评 CAT
  • 京东 Hydra
  • Twitter -OpenZipkin

数据同步

  • canal,阿里巴巴mysql数据库binlog的增量订阅&消费组件 。
  • otter,阿里巴巴分布式数据库同步系统(解决中美异地机房)

工具与组件

异步通讯

- Netty [site](https://netty.io/) [code](https://github.com/netty/netty),
        [User guide for 4.x](https://netty.io/wiki/user-guide-for-4.x.html)
        Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序。

序列化

- FastJson [code](https://github.com/alibaba/fastjson)
- Jackson [site](https://github.com/FasterXML/jackson),文档值得一读
- Xstream
- protobuf
- thrift

数据库连接池

  • Hikari,是一款非常强大,高效,并且号称“史上最快连接池”。由于其性能方面比较好,并且在springboot2.0之后,采用的默认数据库连接池就是Hikari,在引用parents后不用专门再添加依赖。性能方面的比较:hikariCP>druid>tomcat-jdbc>dbcp>c3p0 。hikariCP的高性能得益于最大限度的避免锁竞争。
  • Druid code ,为监控而生的数据库连接池!
  • C3P0 ,是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。

Web Framwork

模版引擎

  • Thymeleaf
  • FreeMarker

日志

  • SLF4J
  • Apache Log4j
  • Apache Log4j 2 source,升级版本
  • Logback

测试

  • 测试工具
    • Junit
    • Mock工具

工具类

  • 通用

    • Apache Commons,包含很多常用的 组件
      <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-lang3</artifactId>
         <version>3.7</version>
      </dependency>
      
    • Google guava source,该项目是 Google 的一个开源项目,包含许多 Google 核心的 Java 常用库
    • VJTools,唯品会关于Java的一些小家底
    • Jodd,一组小巧实用的工具集
  • HTTP

    • Apache HttpComponents Client source site,强大的Http请求组件, v4.5.2文档
    • OkHttp,An HTTP & HTTP/2 client for Android and Java applications.
    • Jodd HTTP

      HTTP is tiny, raw HTTP client - and yet simple and convenient. It offers a simple way to send requests and read responses - so to please developers.

  • Office

    • Apache POI - Office文件解析利器 Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT)
  • 其他

    • Dozer 对象映射利器

文件系统

  • TFS(Taobao File System)是淘宝针对海量非结构化数据存储设计的分布式系统,构筑在普通的Linux机器集群上,可为外部提供高可靠和高并发的存储访问。
  • FastDFS,FastDFS 是以C语言开发的一项开源轻量级分布式文件系统,他对文件进行管理,主要功能有:文件存储,文件同步,文件访问(文件上传/下载),特别适合以文件为载体的在线服务,如图片网站,视频网站等

黑话系列

Clone this wiki locally