java数学公式解析框架有哪些_最常⽤的Java框架或者开源项
⽬有哪些?
周末愉快啊!⼩伙伴们!
最近,我简单完善了⼀下之前总结的 Java 最常⽤的⼀些框架和开源项⽬。
发这篇⽂章的起因是看到知乎有个类似的问题,然后感觉⾼赞的回答不是很让⼈满意,获得这么⾼的点赞也是让我很迷。
欢迎补充完善,⼀起打造⼀个最棒的 Java 开源项⽬集合!
系统设计
微服务/分布式
基础框架
1. Spring Boot [1] :Spring Boot 可以轻松创建独⽴的⽣产级基于 Spring 的应⽤程序,内置 web 服务器让你可以像运⾏普通 Java 程
序⼀样运⾏项⽬。另外,⼤部分 Spring Boot 项⽬只需要少量的配置即可,这有别于 Spring 的重配置。
2. spring-cloud-alibaba[2] : Spring Cloud Alibaba 致⼒于提供微服务开发的⼀站式解决⽅案。此项⽬包含开发分布式应⽤微服务的
必需组件,⽅便开发者通过 Spring Cloud 编程模型轻松使⽤这些组件来开发分布式应⽤服务。
Spring Cloud Alibaba
1. Sentinel[3] :A lightweight powerful flow control component enabling reliability and monitoring for microservices. (轻量
级的流量控制、熔断降级 Java 库)。
2. Dubbo[4] :Apache Dubbo 是⼀个基于 Java 的⾼性能开源 RPC 框架。
3. Nacos[5] :Nacos 致⼒于帮助您发现、配置和管理微服务。Nacos 提供了⼀组简单易⽤的特性集,帮助您快速实现动态服务发现、
服务配置、服务元数据及流量管理。Nacos 可以作为 Dubbo 的注册中⼼来使⽤。
4. Seata[6] : Seata 是⼀种易于使⽤,⾼性能,基于 Java 的开源分布式事务解决⽅案。
5. RocketMQ[7] :阿⾥巴巴开源的⼀款⾼性能、⾼吞吐量的分布式消息中间件。
API ⽹关
微服务下⼀个系统被拆分为多个服务,但是像 安全认证,流量控制,⽇志,监控等功能是每个服务都需要的,没有⽹关的话,我们就需要在每个服务中单独实现,这使得我们做了很多重复的事情并且没有⼀个全局的视图来统⼀管理这些功能。
综上:⼀般情况下,⽹关⼀般都会提供请求转发、安全认证(⾝份/权限认证)、流量控制、负载均衡、容灾、⽇志、监控这些功能。
上⾯介绍了这么多功能实际上⽹关主要做了⼀件事情:请求过滤 。权限校验、流量控制这些都可以通过过滤器实现,请求转也是通过过滤器实现的。
1. Kong[8] :Kong 是⼀个云原⽣、快速的、可伸缩的分布式微服务抽象层(也称为 API ⽹关、API 中间件或在某些情况下称为服务⽹
格)。2015 年作为开源项⽬发布,其核⼼价值是⾼性能和可扩展性。
2. Soul[9] :⾼性能、基于 webflux 的反应式 Java API ⽹关
3. Spring Cloud Gateway[10] : 基于 Spring Framework 5.x 和 Spring Boot 2.x 构建的⾼性能⽹关。
4. Zuul[11] : Zuul 是⼀个 L7 应⽤程序⽹关,它提供了动态路由,监视,弹性,安全性等功能。
配置中⼼
微服务下,业务的发展⼀般会导致服务数量的增加,进⽽导致程序配置(服务地址、数据库参数等等)增多。
传统的配置⽂件的⽅式已经⽆法满⾜当前需求,主要有两点原因:⼀是安全性得不到保障(配置放在代码库中容易泄露);⼆是时效性不
⾏ (修改配置需要重启服务才能⽣效)。
除了 Apollo 和 Spring Cloud Config 之外,Spring Cloud Alibaba 中的 Nacos 组件也可以提⾼配置功能。
1. Apollo[12] :Apollo()是携程框架部门研发的分布式配置中⼼,能够集中化管理应⽤不同环境、不同集的配置,配置修改后
能够实时推送到应⽤端,并且具备规范的权限、流程治理等特性,适⽤于微服务配置管理场景。
2. Spring Cloud Config[13] :Spring Cloud Config 是 Spring Cloud 家族中最早的配置中⼼,虽然后来⼜发布了 Consul 可以代
替配置中⼼功能,但是 Config 依然适⽤于 Spring Cloud 项⽬,通过简单的配置即可实现功能。
3. Consul[14] :Consul 是 HashiCorp 公司推出的开源软件,提供了微服务系统中的服务治理、配置中⼼、控制总线等功能。这些功
能中的每⼀个都可以根据需要单独使⽤,也可以⼀起使⽤以构建全⽅位的服务⽹格,总之 Consul 提供了⼀种完整的服务⽹格解决⽅案。
相关阅读:微服务架构中配置中⼼的选择:Apollo VS Spring Cloud Config[15]
链路追踪
⽬前分布式链路追踪系统基本都是根据⾕歌的《Dapper ⼤规模分布式系统的跟踪系统》这篇论⽂发展⽽来,主流的有
Pinpoint,Skywalking ,CAT(当然也有其他的例如 Zipkin,Jaeger 等产品,不过总体来说不如前⾯选取的 3 个完成度⾼)等。
1. Skywalking[16] : 针对分布式系统的应⽤性能监控,尤其是针对微服务、云原⽣和⾯向容器的分布式系统架构。
2. Zipkin[17] :Zipkin 是⼀个分布式跟踪系统。它有助于收集解决服务体系结构中的延迟问题所需的时序数据。功能包括该数据的收集
和查。
3. CAT[18] :CAT 作为服务端项⽬基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语⾔客户端,已经在美团点评的基础
架构中间件框架(MVC 框架,RPC 框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。
相关阅读:Skywalking 官⽹对于主流开源链路追踪系统的对⽐[19]
消息中间件
我们可以把消息队列⽐作是⼀个存放消息的容器,当我们需要使⽤消息的时候可以取出消息供⾃⼰使⽤。
使⽤消息队列主要有两点好处:⼀是通过异步处理提⾼系统性能(削峰、减少响应所需时间);⼆是降低系统耦合性。
1. RocketMQ[20] :阿⾥巴巴开源的⼀款⾼性能、⾼吞吐量的分布式消息中间件。
2. Kafaka[21]: Kafka 是⼀种分布式的,基于发布 / 订阅的消息系统。关于它的⼊门可以查看:Kafka ⼊门看这⼀篇就够了[22]
3. RabbitMQ[23] :由 erlang 开发的基于 AMQP(Advanced Message Queue ⾼级消息队列协议)协议实现的消息队列。
阿里巴巴开源镜像站任务调度/定时任务
任务调度/定时任务在系统中应⽤太⼴泛了。为什么需要任务调度/定时任务呢?
时间驱动处理场景:整点发送优惠券,每天更新收益,每天刷新标签数据和⼈数据。
批量处理数据:按⽉批量统计报表数据,批量更新短信状态,实时性要求不⾼。
异步执⾏解耦:活动状态刷新,异步执⾏离线查询,与内部逻辑解耦。
这类框架也⽐较多,下⾯就带⼤家看看!
1. Quartz[24] :⼀个很⽕的开源任务调度框架,Java 定时任务领域的⽼⼤哥或者说参考标准, 很多其他任务调度框架都是基
于 quartz 开发的,⽐如当当⽹的elastic-job就是基于quartz⼆次开发之后的分布式调度解决⽅案
2. XXL-JOB[25] :XXL-JOB 是⼀个分布式任务调度平台,其核⼼设计⽬标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码
并接⼊多家公司线上产品线,开箱即⽤。
3. Elastic-Job[26] :Elastic-Job 是当当⽹开源的⼀个基于 Quartz 和 Zookeeper 的分布式调度解决⽅案,由两个相互独⽴的⼦项⽬
Elastic-Job-Lite 和 Elastic-Job-Cloud 组成,⼀般我们只要使⽤ Elastic-Job-Lite 就好。
4. EasyScheduler[27] ( 更名为 DolphinScheduler,已经成为 Apache 孵化器项⽬):Easy Scheduler 是⼀个分布式⼯作流任务调
度系统,主要解决“复杂任务依赖但⽆法直接监控任务健康状态”的问题。Easy Scheduler 以 DAG ⽅式组装任务,可以实时监控任
务的运⾏状态。同时,它⽀持重试,重新运⾏等操作... 。
5. PowerJob[28] :新⼀代分布式任务调度与计算框架,⽀持 CRON、API、固定频率、固定延迟等调度策略,提供⼯作流来编排任务
解决依赖关系,使⽤简单,功能强⼤,⽂档齐全,欢迎各位接⼊使⽤!h/ 。
相关阅读:Spring Job、Quartz、XXL-Job 对⽐+全解析
搜索引擎
数据库对于全⽂检索不太友好,这种事情最好交给搜索引擎来做,⽐如电商系统的商品搜索往往都是基于搜索引擎来做的。
Elasticsearch 在搜索引擎数据库领域排名绝对第⼀,内核基于 Lucene 构建,⽀持全⽂搜索是职责所在,提供了丰富友好的 API。
Elasticsearch 除了做搜索引擎,还常常被拿来做⽇志检索(著名的 ELK 三件套,讲的就是 Elasticsearch,Logstash,Kibana,专门针对⽇志采集、存储、查询设计的产品组合,相关阅读:什么是 ELK Stack?[29])。
Solr ⽐较⽼牌了,但是,⽬前⽣态以及社区活跃度都⽐不上 Elasticsearch。
1. Elasticsearch[30]:开源,分布式,RESTful 搜索引擎。
2. Solr[31] : Solr(读作“solar”)是 Apache Lucene 项⽬的开源企业搜索平台。
数据库
连接池
1. Druid[32] : 阿⾥巴巴数据库事业部出品,为监控⽽⽣的数据库连接池。
2. HikariCP[33] : ⼀个可靠的⾼性能 JDBC 连接池。Springboot 2.0 选择 HikariCP 作为默认数据库连接池。
数据库中间件
数据库的数据量⼤了之后就要考虑读写分离、分库分表,但是⼀定要尽量能避免分库分表就避免,因为会带来很多其他问题。
1. ShardingSphere[34] :ShardingSphere 是⼀套开源的分布式数据库中间件解决⽅案组成的⽣态圈,它由 Sharding-JDBC、
Sharding-Proxy 和 Sharding-Sidecar(计划中)这 3 款相互独⽴的产品组成。他们均提供标准化的数据分⽚、分布式事务和数据库治理功能,可适⽤于如 Java 同构、异构语⾔、云原⽣等各种多样化的应⽤场景。中⽂⽂档:
/document/current/cn/overview/[35] 。
2. MyCat[36] : MyCat 是数据库分库分表的中间件,MyCat 使⽤最多的两个功能是:读写分离和分库分表。MyCat 是⼀些社区爱好者
在阿⾥ Cobar 的基础上进⾏⼆次开发,解决了 Cobar 当时存 在的⼀些问题,并且加⼊了许多新的功能在其中。
相关阅读:数据库中间件详解(精品长⽂)[37]
Redis
1. Redisson[38] :Redisson[39]是架设在Redis[40]基础上的⼀个 Java 驻内存数据⽹格(In-Memory Data Grid)。⽀持超过 30 个
对象和服务:Set, multiap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, RPC。Redisson 项⽬介绍[41]
框架
1. MyBatis-Plus[42] : MyBatis-Plus[43](简称 MP)是⼀个 MyBatis[44] 的增强⼯具,在 MyBatis 的基础上只做增强不做改变,为
简化开发、提⾼效率⽽⽣。
2. DataX[45] :DataX 是阿⾥巴巴集团内被⼴泛使⽤的离线数据同步⼯具/平台,实现包括 MySQL、Oracle、SqlServer、
Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间⾼效的数据同步功能。
3. canal[46] : canal [kə'næl],译意为⽔道/管道/沟渠,主要⽤途是基于 MySQL 数据库增量⽇志解析,提供增量数据订阅和消费
4. dynamic-datasource-spring-boot-starter[47] :dynamic-datasource-spring-boot-starter 是⼀个基于 springboot 的快速集
成多数据源的启动器。如果说你有配置多数据源、读写分离等需求的话,可以了解⼀下这个项⽬。
⼤数据
1. Spark[48] :Spark 是⽤于⼤规模数据处理的统⼀分析引擎。
2. Flink[49] :Apache Flink 是⼀个框架和分布式处理引擎,⽤于在⽆边界和有边界数据流上进⾏有状态的计算。Flink 能在所有常见
集环境中运⾏,并能以内存速度和任意规模进⾏计算。
3. HBase[50]:HBase – Hadoop Database,是⼀个⾼可靠性、⾼性能、⾯向列、可伸缩的分布式存储系统,利⽤ HBase 技术可在
廉价 PC Server 上搭建起⼤规模结构化存储集。
4. Flume[51] :Apache Flume 是⼀个分布式的、可靠的、可⽤的,从多种不同的源收集、聚集、移动⼤量⽇志数据到集中数据存储的
系统。
5. Storm[52] : ⼀个分布式,⾼容错的实时计算系统。
⽇志系统
实际项⽬中使⽤ ELK 三件套(Elasticsearch,Logstash,Kibana)来做⽇志系统的⾮常多。
另外,像 Prometheus + Grafana 也是⽐较主流的,相关阅读:Prometheus + Grafana 监控配置指北:打造专属监控系统[53] 。
1. loki[54] :Loki是 Grafana Labs 团队最新的开源项⽬,是⼀个⽔平可扩展,⾼可⽤性,多租户的⽇志聚合系统。它的设计⾮常经济
⾼效且易于操作,因为它不会为⽇志内容编制索引,⽽是为每个⽇志流编制⼀组标签。项⽬受 Prometheus 启发,官⽅的介绍就是:Like Prometheus, but for logs.,类似于 Prometheus 的⽇志系统。相关阅读:
Loki ⽇志系统[55]
使⽤ Loki 进⾏⽇志监控和报警[56]
开放平台(如)
1. WxJava[57] : WxJava (开发 Java SDK),⽀持包括⽀付、开放平台、⼩程序、企业/企业号和等的后端开发。测试
为了能让我们编写的系统更加健壮,必要的测试(UI 测试、单元测试...)是必须的。
1. JUnit[58] : Java 测试框架。
2. Mockito[59] :Mockito 是⼀个模拟测试框架,可以让你⽤优雅,简洁的接⼝写出漂亮的单元测试。(对那些不容易构建的对象⽤⼀
个虚拟对象来代替,使其在调试期间⽤来作为真实对象的替代品)
3. PowerMock[60] :编写单元测试仅靠 Mockito 是不够。因为 Mockito ⽆法 mock 私有⽅法、final ⽅法及静态⽅法等。
PowerMock 这个 framework,主要是为了扩展其他 mock 框架,如 Mockito、EasyMock。它使⽤⼀个⾃定义的类加载器,纂改字节码,突破 Mockito ⽆法 mock 静态⽅法、构造⽅法、final 类、final ⽅法以及私有⽅法的限制。
4. WireMock[61] :模拟 HTTP 服务的⼯具(Mock your APIs)。
相关阅读:
1. The Practical Test Pyramid- Martin Fowler[62] (很赞的⼀篇⽂章,不过是英⽂的)
2. 浅谈测试之 PowerMock[63]
机器学习
1. Deeplearning4j[64] :Deeplearning4j 是第⼀个为 Java 和 Scala 编写的商业级,开源,分布式深度学习库。
2. Smile[65] :基于 Java 和 Scala 的机器学习库。
相关阅读:
1. Java 能⽤于机器学习和数据科学吗?-InfoQ[66]
2. Deeplearning4j ⼊门 - IBM Developer[67]
Devpos
CI
1. Jenkins[68] : Jenkins 是领先的开源⾃动化服务器。它使⽤ Java 构建,提供了 1600 多个插件来⽀持⼏乎任何东西的⾃动化,从
⽽使⼈类实际上可以将时间花在做机器⽆法做到的事情上。参考资料
来源:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。