JAVA后端技术发展路线

一、核心内容

1. Web 开发

Web 开发是 Java 后端技术的基础领域,主要包括 Servlet、JSP、Spring、Struts、Hibernate 等技术。Web 开发的发展路线主要包括以下方面:

2. 大数据

大数据技术是 Java 后端技术的重要领域,主要包括 Hadoop、Spark、Flink、Hive、HBase 等技术。大数据技术的发展路线主要包括以下方面:

3. 云计算

云计算技术是 Java 后端技术的新兴领域,主要包括容器技术、虚拟化技术、微服务等。云计算技术的发展路线主要包括以下方面:

4. 微服务

微服务架构是 Java 后端技术的热门领域,主要包括服务注册与发现、服务治理、API 网关、分布式事务等。微服务架构的发展路线主要包括以下方面:

5. 安全和性能

安全和性能一直是 Java 后端技术关注的重点领域,随着互联网的发展和数据量的增大,安全和性能的重要性也越来越凸显。安全和性能的发展路线主要包括以下方面:

6. 新技术和新应用

Java 后端技术也在不断地发展和演进,新技术和新应用层出不穷。新技术和新应用的发展路线主要包括以下方面:

人工智能技术的应用,如机器学习、深度学习、自然语言处理等。
区块链技术的应用,如以太坊、超级账本等。
物联网技术的应用,如云平台、传感器、边缘计算等。

二、技术栈

API 网关

  1. Spring Cloud Gateway

Spring Cloud Gateway 是由 WebFlux + Netty + Reactor 实现的响应式的 API 网关。Spring Cloud Gateway 旨在为微服务架构提供一种简单且有效的 API 路由的管理方式,并基于 Filter 的方式提供网关的基本功能,例如说安全认证、监控、限流等等。Spring Cloud Gateway 定位于取代 Netflix Zuul,成为 Spring Cloud 生态系统的新一代网关。目前看下来非常成功,老的项目的网关逐步从 Zuul 迁移到 Spring Cloud Gateway,新项目的网关直接采用 Spring Cloud Gateway。相比 Zuul 来说,Spring Cloud Gateway 提供更优秀的性能,更强大的有功能。

  1. Zuul

Zuul 是由 Netflix 开源的微服务网关,提供都动态路由、监控、熔断、安全等等功能。

  1. APISIX

APISIX 是基于 OpenResty + etcd 实现的云原生、高性能、可扩展的微服务 API 网关。它是国人开源,目前已经进入 Apache 进行孵化

  1. Kong

Kong 是由 Mashape 公司开源的云原生、高性能、可扩展的微服务 API 网关。它基于 OpenResty 实现,使用 Cassandra 或 PostgreSQL 存储数据。

  1. Nginx

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

  1. Soul

Soul 是基于 WebFlux 实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。

服务调用

  1. Dubbo

Apache Dubbo 是一款 RPC 服务开发框架,用于解决微服务架构下的服务治理与通信问题,官方提供了 Java、Golang 等多语言 SDK 实现。使用 Dubbo 开发的微服务原生具备相互之间的远程地址发现与通信能力, 利用 Dubbo 提供的丰富服务治理特性,可以实现诸如服务发现、负载均衡、流量调度等服务治理诉求。Dubbo 被设计为高度可扩展,用户可以方便的实现流量拦截、选址的各种定制逻辑。

  1. Ribbon + Feign

Ribbon 是一个基于 Http 和 TCP 的客服端负载均衡工具,它是基于 Netflix Ribbon 实现的。它不像 spring cloud 服务注册中心、配置中心、API 网关那样独立部署,但是它几乎存在于每个 spring cloud 微服务中。 包括 feign 提供的声明式服务调用也是基于该 Ribbon 实现的。ribbon 默认提供很多种负载均衡算法, 例如 轮询、随机 等等。甚至包含自定义的负 载均衡算法。
gRPC

  1. SOFARPC

SOFARPC 是蚂蚁金服开源的一款基于 Java 实现的 RPC 服务框架,为应用之间提供远程服务调用能力,具有高可伸缩性,高容错性,目前蚂蚁金服所有的业务的相互间的 RPC 调用都是采用 SOFARPC。SOFARPC 为用户提供了负载均衡,流量转发,链路追踪,链路数据透传,故障剔除等功能。SOFARPC 还支持不同的协议,目前包括 bolt,RESTful,dubbo,H2C 协议进行通信。其中 bolt 是蚂蚁金融服务集团开放的基于 Netty 开发的网络通信框架。

  1. Motan

Motan 是一套高性能、易于使用的分布式远程服务调用 (RPC) 框架。

消息队列

  1. RocketMQ

RocketMQ是由阿里捐赠给Apache的一款低延迟、高并发、高可用、高可靠的分布式消息中间件。经历了淘宝双十一的洗礼。RocketMQ既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性。

  1. Kafka

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。 对于像Hadoop一样的日志数据和离线分析系统,但又要求实时处理的限制,这是一个可行的解决方案。Kafka的目的是通过Hadoop的并行加载机制来统一线上和离线的消息处理,也是为了通过集群来提供实时的消息。

  1. RabbitMQ

2007 年发布,是一个在 AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的消息中间件之一。
RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,由于erlang 语言的高并发特性,性能较好,本质是个队列,FIFO 先入先出,里面存放的内容是message
.RabbitMQ 是一个消息中间件:它接收消息并且转发,就类似于一个快递站,卖家把快递通过快递站,送到我们的手上,MQ也是这样,接收并存储消息,再转发。

  1. ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

作业调度

  1. Elastic Job Lite

ElasticJob 是面向互联网生态和海量任务的分布式调度解决方案,由两个相互独立的子项目 ElasticJob-Lite 和 ElasticJob-Cloud 组成。 它通过弹性调度、资源管控、以及作业治理的功能,打造一个适用于互联网场景的分布式调度解决方案,并通过开放的架构设计,提供多元化的作业生态。 它的各个产品使用统一的作业 API,开发者仅需一次开发,即可随意部署。ElasticJob 已于 2020 年 5 月 28 日成为 Apache ShardingSphere 的子项目。 欢迎通过邮件列表参与讨论。
定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务。

  1. Elastic Job Cloud

定位为轻量级无中心化解决方案,使用 jar 的形式提供分布式任务的协调服务。

  1. Quartz

Quartz 是一个完全由 Java 编写的开源作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。
Quartz 可以与 J2EE 与 J2SE 应用程序相结合也可以单独使用。
Quartz 允许程序开发人员根据时间的间隔来调度作业。
Quartz 实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。

  1. XXL-Job

XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。

注册中心

  1. Eureka

Eureka是Netflix开源的一款提供服务注册和发现的产品
github地址为 https://github.com/Netflix/eureka
注册中心是分布式开发的核心组件之一
而eureka是spring cloud推荐的注册中心实现
Eureka是一个REST (Representational State Transfer)服务
它主要用于AWS云,用于定位服务,以实现中间层服务器的负载平衡和故障转移,我们称此服务为Eureka服务器
Eureka也有一个基于java的客户端组件,Eureka客户端,这使得与服务的交互更加容易,同时客户端也有一个内置的负载平衡器,它执行基本的循环负载均衡。

  1. Nacos

Nacos 英文全称为 Dynamic Naming and Configuration Service,是一个由阿里巴巴团队使用 Java 语言开发的开源项目。

  1. Zookeeper

ooKeeper是一个开源的分布式协调服务(a service for coordinating processes of distributed applications),由雅虎公司创建,是Google Chubby的开源实现(Google Chubby是有名的分布式锁服务,GFS和Big Table等大型系统都用它来解决分布式协调、Master选举等一系列与分布式锁服务相关的问题)。分布式程序可以基于ZooKeeper实现负载均衡,命名服务,分布式锁等功能。ZooKeeper将全量数据都存在内存中,实现提高服务器吞吐、减少延迟的目的。

  1. Consul

Consul 是HashiCorp公司推出的开源工具,Consul由Go语言开发,部署起来非常容易,只需要极少的可执行程序和配置文件,具有绿色、轻量级的特点。 Consul 是 分布式 的、 高可用 的、 可横向扩展 的用于实现分布式系统的服务发现与配置。

  1. Etcd

etcd是用于共享配置和服务发现的分布式、一致性的KV存储系统。

配置中心

  1. Apollo

Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。

  1. Nacos

Nacos 英文全称为 Dynamic Naming and Configuration Service,是一个由阿里巴巴团队使用 Java 语言开发的开源项目。

  1. Spring Cloud Config

Spring Cloud Config为分布式系统外部化配置提供了服务器端和客户端的支持,它包括Config Server和Config Client两部分。由于Config Server和Config Client都实现了对Spring Environment和PropertySource抽象的映射,因此,Spring Cloud Config非常适合Spring应用程序,当然也可与任何其他语言编写的应用程序配合使用。

  1. Disconf

链路追踪

  1. SkyWalking

skywalking又是一个优秀的国产开源框架,2015年由个人吴晟(华为开发者)开源 , 2017年加入Apache孵化器。
skywalking是分布式系统的应用程序性能监视工具,专为微服务、云原生架构和基于容器(Docker、K8s、Mesos)架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统。提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案(官网介绍)。

  1. Zipkin

Zipkin 是基于 Java 的分布式追踪系统,用于收集和查找来自分布式系统的数据。伴随着 HTTP 请求的发出,有太多事情可能发生了:它们包括对数据库引擎,缓存服务器或任何其他微服务组件(如另一个微服务)的调用。每当此时, Zipkin 就能派上用场了。针对这种微服务拓扑结构非常复杂的情况,您在进行故障排除时就可以使用 Zipkin 进行可视化等诸多功能。

  1. CAT

CAT 是基于 Java 开发的实时应用监控平台,为美团点评提供了全面的实时监控告警服务。

CAT 作为服务端项目基础组件,提供了 Java, C/C++, Node.js, Python, Go 等多语言客户端,已经在美团点评的基础架构中间件框架(MVC框架,RPC框架,数据库框架,缓存框架等,消息队列,配置系统等)深度集成,为美团点评各业务线提供系统丰富的性能指标、健康状况、实时告警等。

CAT 很大的优势是它是一个实时系统,CAT 大部分系统是分钟级统计,但是从数据生成到服务端处理结束是秒级别,秒级定义是48分钟40秒,基本上看到48分钟38秒数据,整体报表的统计粒度是分钟级;第二个优势,监控数据是全量统计,客户端预计算;链路数据是采样计算。

  1. Pinpoint

Pinpoint是一个用Java/PHP写的开源的应用于大规模分布式系统的应用系统管理工具
Pinpoint是一个开源的 APM (Application Performance Management/应用性能管理)工具, 用于基于java的大规模分布式系统。
仿照 Google Dapper , Pinpoint 通过跟踪分布式应用之间的调用来提供解决方案, 以帮助分析系统的总体结构和内部模块之间如何相互联系。
如今的服务通常由很多不同模块组成,他们之间相互调用并通过API调用外部服务。 每个交互是如何被执行的通常是一个黑盒。 Pinpoint跟踪这些模块之间的调用流并提供清晰的视图来定位问题区域和潜在瓶颈。

服务保障

  1. Hystrix

hystrix 是一个处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时,异常,hystrix能够保证在一个依赖问题的情况选,不会导致整体服务的失败,避免级联故障,一提高分布式系统的弹性.

  1. Sentinel

随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助您保护服务的稳定性。

  1. Resilience4j

Hystrix停更之后,Netflix官方推荐移步至resilience4j,它是一个轻量、易用、可组装的高可用框架,支持熔断、高频控制、隔离、限流、限时、重试等多种高可用机制。

服务器

  1. Netty

Netty 是由 JBOSS 提供的一个 Java 开源框架。Netty 提供异步的、基于事件驱动的网络应用程序框架,用以快速开发高性能、高可靠性的网络 IO 程序,是目前最流行的 NIO 框架,Netty 在互联网领域、大数据分布式计算领域、游戏行业、通信行业等获得了广泛的应用,知名的 Elasticsearch 、Dubbo 框架内部都采用了 Netty。

  1. Tomcat

是一个开源软件实现的Java Servlet和JavaServer Pages技术。不同版本的Apache Tomcat可用于不同版本的Servlet和JSP规范。

  1. Jetty

Jetty是一个开源、基于标准、全功能实现的JAVA服务器。它在Apache2.0协议下发布,因此可以自由的用于商业用途和发行。首创于1995年,Jetty受益于一个广大的用户社区,有一个稳定的核心开发者来持续专著的开发。有很多正在运行的使用Jetty的例子,这也不过是千分之十的Jetty实例

  1. Nginx

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

Java

  1. JDK 源码

JDK 中的代码非常多,不可能全部读完,因此要有的放矢。从整体上来讲,顺序大概是: 集合类。 主要包括Collection、Map、Queue 等接口组成的一系列类和接口,包括ArrayList、LinkedList、HashMap 等

  1. Java 并发

并发关键字:volatile,final,synchronized。关键字: synchronized详解。Synchronized可以 …
J.U.C框架。Lock框架和Tools类。

  1. JVM 虚拟机

虚拟机是一种抽象化的计算机,可以通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如堆栈、处理器、寄存器等,还具有许多相应的指令系统。Java虚拟机屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

J2EE

  1. Spring

Spring 是分层的 Java SE/EE 一站式轻量级开源框架,以 IoC(Inverse of Control,控制反转)和 AOP(Aspect Oriented Programming,面向切面编程)为内核。Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》。Spring是为了解决企业级应用开发的复杂性而创建的,使用Spring可以让简单的JavaBean实现之前只有EJB才能完成的事情。但是Spring不仅仅局限于服务器端开发,任何Java应用都能在简单性、可测试性和松耦合性等方面从Spring中获益。

  1. Spring Boot

Spring Boot 是所有基于 Spring 开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包,spring boot整合了所有的框架(不知道这样比喻是否合适)。

  1. Spring Cloud & Spring Cloud Alibaba

SpringCloud是一系列框架的有序集合。它利用SpringBoot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器数据监控等

Web 框架

  1. Spring MVC

SpringMVC就是一个Spring内置的MVC框架。. MVC框架,它解决WEB开发中常见的问题 (参数接收、文件上传、表单验证、国际化等等),而且使用简单,与Spring无缝集成。. 支持 RESTful风格的URL请求。. 采用了松散耦合可插拔组件结构,比其他 MVC 框架更具扩展性和灵活性。

  1. Spring Webflux

Spring WebFlux 是 Spring Framework 5.0中引入的新的响应式web框架。 与Spring MVC不同,它不需要Servlet API,是完全异步且非阻塞的,并且通过Reactor项目实现了Reactive Streams规范。

  1. WebSocket

WebSocket 是一种在单个TCP连接上进行全双工通信的协议。 WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocketAPI也被W3C定为标准

  1. Web Services

WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。

安全框架

  1. Spring Security

springsecurity是一个功能强大且高度可定制的身份验证和访问控制框架。springsecurity是一个专注于为Java应用程序提供身份验证和授权的框架。与所有Spring项目一样,Spring安全性的真正威力在于它可以很容易地扩展以满足定制需求。

  1. Shiro

Apache Shiro 是Java 的一个安全框架。Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与Web 集成、缓存等。

  1. OAuth 2.0

开放授权(OAuth)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。 OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站(例如,视频编辑网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。

ORM 框架

  1. MyBatis

mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。

  1. Hibernate

Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,它将 pojo 与数据库表建立映射关系,是一个全自动的 ORM(Object - Relationship - Mapping)框架,Hibernate 可以自动生成 SQL 语句,自动执行,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

  1. Spring Data JPA

Spring Data JPA是Spring Data家族的一部分,可以轻松实现基于JPA的存储库。 此模块处理对基于JPA的数据访问层的增强支持。 它使构建使用数据访问技术的Spring驱动应用程序变得更加容易。

数据库连接池

  1. HikariCP

HikariCP是由日本程序员开源的一个数据库连接池组件,代码非常轻量,并且速度非常的快。根据官方提供的数据,在i7,开启32个线程32个连接的情况下,进行随机数据库读写操作,HikariCP的速度是现在常用的C3P0数据库连接池的数百倍。在SpringBoot2.0中,官方也是推荐使用HikariCP。

  1. Druid

Druid首先是一个数据库连接池。Druid是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。Druid已经在阿里巴巴部署了超过600个应用,经过一年多生产环境大规模部署的严苛考验。Druid是阿里巴巴开发的号称为监控而生的数据库连接池!

  1. 多数据源 && 读写分离

数据库中间件

  1. Sharding JDBC

ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。

  1. Sharding Sphere

Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。

Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。 它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。 它站在数据库的上层视角,关注它们之间的协作多于数据库自身。

  1. MyCAT

从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了 MySQL 协议的Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native) 协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。

  1. Canal

canal,译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费。canal的工作原理就是把自己伪装成MySQL slave,模拟MySQL slave的交互协议向MySQL Mater发送 dump协议,MySQL mater收到canal发送过来的dump请求,开始推送binary log给canal,然后canal解析binary log,再发送到存储目的地,比如MySQL,Kafka,Elastic Search等等。

分布式事务

  1. TCC Transaction

TCC-TRANSACTION是一款开源的微服务架构下的TCC型分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
Try: 尝试执行业务,完成所有业务检查(一致性),预留必须业务资源(准隔离性)
Confirm: 确认执行业务,不作任何业务检查,只使用Try阶段预留的业务资源,满足幂等性
Cancel: 取消执行业务,释放Try阶段预留的业务资源,满足幂等性

  1. Seata

Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。 Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。

  1. Fescar

2014 年,阿里中间件团队发布 TXC(Taobao Transaction Constructor),为集团内应用提供分布式事务服务。
2016 年,TXC 经过产品化改造,以 GTS(Global Transaction Service) 的身份登陆阿里云,成为当时业界唯一一款云上分布式事务产品 ,在阿云里的公有云、专有云解决方案中,开始服务于众多外部客户。
2019 年起,基于 TXC 和 GTS 的技术积累,阿里中间件团队发起了开源项目 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社区一起建设这个分布式事务解决方案。

  1. Happylifeplat TCC

分布式事务方案之tcc开源框架。基于java语言来开发(JDK1.8),支持dubbo,springcloud等rpc框架进行分布式事务。

数据库

  1. MySQL

MySQL 是一个关系型数据库管理系统,由瑞典 MySQLAB 公司开发,目前属于 Oracle 公司

  1. Redis

Redis是现在最受欢迎的NoSQL数据库之一,Redis是一个使用ANSI C编写的开源、包含多种数据结构、支持网络、基于内存、可选持久性的键值对存储数据库

  1. MongoDB

MongoDB是一个基于分布式文件存储 [1] 的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

  1. TiDB

TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性

搜索引擎

  1. Elasticsearch

Elasticsearch是一个基于Lucene的搜索服务器。. 它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。. Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。. Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。. 官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。. 根据DB-Engines的排名显示,Elasticsearch是最受欢迎的企业搜索引擎,其次是Apache Solr,也是基于Lucene。. 外文名. Elasticsearch .

  1. Solr

Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。为了在CNET网络的公司网站上添加搜索功能,Yonik Seely于2004年创建了Solr。并在2006年1月,它成为Apache软件基金会下的一个开源项目。并于2016年发布最新版本Solr 6.0,支持并行SQL查询的执行。

  1. Lucene

Lucene是Apache组织的一个用Java实现全文搜索引擎的开源项目。后来有人将Lucene移植到。Net语言。
Lucene是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能。
Lucene的使用者不需要深入了解有关全文检索的知识,仅仅学会使用库中的一个类,你就为你的应用实现全文检索的功能。
不过千万别以为Lucene是一个象google那样的搜索引擎,Lucene甚至不是一个应用程序,它仅仅是一个工具,一个Library。你也可以把它理解为一个将索引、搜索功能封装的很好的一套简单易用的API。利用这套API你可以做很多有关搜索的事情,而且很方便。

容器服务

  1. Linux

  2. Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

  1. Kubernetes

Kubernetes,简称 k8s(k,8 个字符,s——明白了?)或者 “kube”,是一个开源的 Linux 容器自动化运维平台,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说,你可以将多台主机组合成集群来运行 Linux 容器,而 Kubernetes 可以帮助你简单高效地管理那些集群。构成这些集群的主机还可以跨越公有云、私有云以及混合云。

  1. Swarm

开发工具

Git

Maven

Jenkins

IntelliJ IDEA

监控体系

  1. ELK

ELK是一套针对日志数据做解决方案的框架,分别代表了三款产品: - E: ElasticSearch(ES),负责日志的存储和检索; - L:Logstash,负责日志的收集,过滤和格式化; - K:Kibana,负责日志的展示统计和数据可视化;

  1. Prometheus

Prometheus 是一款基于时序数据库的开源监控告警系统,非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控。不需要任何SDK或者其他的集成过程。这样做非常适合做虚拟化环境监控系统,比如VM、Docker、Kubernetes等。输出被监控组件信息的HTTP接口被叫做exporter 。目前互联网公司常用的组件大部分都有exporter可以直接使用,比如Varnish、Haproxy、Nginx、MySQL、Linux系统信息(包括磁盘、内存、CPU、网络等等)。

Spring Boot Admin

CAT

Sentry

前端框架

React

Vue

Angular

大数据

HBase

Hive

Spark

Flink

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想从Java后端的角度来学习物联网方向,以下是一些你需要学习的技术和知识: 1. MQTT协议:学习MQTT协议,它是一种轻量级的物联网通信协议,用于在物联网设备之间进行可靠的消息传递。了解如何使用Java来实现MQTT客户端,并与物联网设备进行通信。 2. RESTful API:学习如何设计和实现RESTful API,用于与物联网设备进行交互。了解Java中的常用框架,如Spring Boot,可以帮助你构建可扩展和高性能的API。 3. 数据库和数据存储:学习如何使用Java与数据库进行交互,以及如何存储和管理物联网设备生成的数据。了解关系型数据库(如MySQL)和NoSQL数据库(如MongoDB)的使用。 4. 安全性和认证:了解物联网设备的安全性和认证机制,学习如何在Java后端应用中实现安全控制,包括身份验证、授权和数据加密等。 5. 大数据处理和分析:学习如何处理和分析物联网设备生成的大量数据。了解大数据处理框架(如Apache Kafka、Apache Spark)以及相关的数据分析工具和技术。 6. 云平台集成:了解如何与云平台集成,将物联网设备的数据传输到云端进行存储和处理。学习云平台的API和SDK,如AWS IoT、Azure IoT等。 7. 设备管理和远程控制:学习如何管理和控制物联网设备,包括远程配置、固件升级和状态监测等。了解物联网平台的相关技术和协议。 8. 性能优化和扩展性:学习如何优化Java后端应用的性能,以及如何设计可扩展的架构,以适应不断增长的物联网设备和数据量。 这些是从Java后端的角度来学习物联网方向的一些关键技术和知识。当然,随着物联网技术的不断发展,还会涌现出新的技术和标准,所以持续学习和关注物联网领域的最新动态也很重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值