微服务框架
RPC框架
JAVA中几种常用的RPC框架介绍 - javaobject - 博客园 (cnblogs.com)
Java中的RPC框架有多种,包括但不限于Dubbo、RMI、Hessian、gRPC等。以下是这些框架的简要介绍:

  • Dubbo:这是一个高性能的RPC框架,由阿里巴巴开源。它基于TCP协议,支持面向接口的远程方法调用,具有智能容错和负载均衡功能,以及服务自动注册和发现的功能。Dubbo被广泛用于微服务架构中。‌
  • RMI:基于JRMP通信协议,常用于不同虚拟机之间的通信,虚拟机可以位于同一主机或不同主机上。RMI是Java内置的远程方法调用框架,用于实现对象之间的远程调用。‌
  • Hessian:基于二进制RPC协议,适用于发送二进制数据。虽然其负载均衡和失效转移依赖于应用的负载均衡器,但在性能方面可能不够完美。Hessian的使用与RMI类似,但淡化了注册管理器的角色。
  • gRPC:由Google开源的高性能RPC框架,支持多种语言,包括Java。gRPC提供了高效的跨语言服务调用,适用于微服务架构。‌
    此外,还有基于webSocket的RPC框架,它建立在TCP协议基础上,支持双向通讯,使得服务端可以向客户端推送数据。这种框架通过一次握手创建持久性连接,实现双向数据传输。‌

Spring, SpringBoot, SpringCloudeAlibaba, SpringMVC, Mybatis, Mybatis-Plus
Spring
https://mp.weixin.qq.com/s/qHCfgwIodxCkd917EVENvA
核心:AOP和IOC
主要组件:Core Container
(核心容器):提供核心功能,包括依赖注入(DI),事件发布,资源访问等。
1.Data Access/Integration:(数据访问/集成):提供与数据库交互的抽象层。
2.Web:提供了基于Servlet的Spring MVC和用于WebSocket和消息传递的Spring WebFlux模块。
3.AOP:提供了面向切面编程的实现。
4.Instrumentation:提供了类汇编和代理类的工具,用于一些特殊的应用场景。
5.Test:提供了用于测试Spring应用程序的工具和类。
Spring框架的工作流程:
1.开发者创建Spring配置文件(XML或Java配置),定义bean及其依赖关系。
2.Spring容器(ApplicationContext)加载配置文件并实例化bean。
3.使用时,容器将bean注入到需要它们的对象中。
4.当应用程序需要某个bean时,Spring容器会提供它,实现了依赖注入。
5.如果需要,Spring AOP模块可以对业务逻辑应用切面。
6.完成业务逻辑后,bean可以被销毁,容器关闭。
SpringBoot
定义:SpringBoot是一个快速开发框架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全部采用注解形式,内置Http服务器(Jetty和Tomcat),最终以java应用程序进行执行。
核心原理:基于SpringMVC五配置文件(纯java)完全注解话+内置tomcat+embed-core实现SpringBoot框架,Main函数启动。SpringBoot黑奴快速整合第三方框架原理,Maven继承依赖关系。

SpringCloude-Alibaba
Spring Cloud Alibaba旨在为微服务开发提供一站式解决方案。该项目包括开发分布式应用程序和服务所需的组件,以便开发人员可以使用Spring Cloud编程模型轻松开发分布式应用程序。使用Spring Cloud Alibaba,您只需要添加一些注释和配置,就可以为您的应用程序使用Alibaba的分布式解决方案,并使用Alibaba中间件构建自己的分布式系统。
Spring Cloud Alibaba其实是阿里的微服务解决方案,是阿里巴巴结合自身微服务实践,开源的微服务全家桶,在Spring Cloud项目中孵化成为Spring Cloud的子项目。第一代的Spring Cloud标准中很多组件已经停更,如:Eureak,zuul等。所以Spring Cloud Alibaba很有可能成为Spring Cloud第二代的标准实现,所以许多组件在业界逐渐开始使用,已有很多成功案例。
值得一提的是Spring Cloud Alibaba对Dubbo做了很好的兼容,同时也提供了一些强大的功能,如 Sentinel 流控 ,Seata 分布式事务,Nacos 服务发现与注册等等。
Spring Cloud Alibaba的功能
Spring Cloud Alibaba是阿里巴巴结合自身的微服务实践开源的微服务全家桶,我个人觉得其组件比Spring Cloud 中的组件更加好用和强大。并且对的Spring Cloud组件做了很好的兼容。比如在Spirng Cloud Alibaba中依然可以使用Feign作为服务调用方式,使用Eureak做服务注册发现等等。Spring Cloud Alibaba主要的功能如下:
流控制和服务降级:支持WebServlet,WebFlux,OpenFeign,RestTemplate,Dubbo访问限制和降级流的功能。它可以在运行时通过控制台实时修改限制和降级流的规则,并且还支持监视限制和降级度量标准。
服务注册和发现:可以注册服务,并且客户可以使用Spring托管的bean(自动集成功能区)发现实例。
分布式配置:支持分布式系统中的外部配置,配置更改时自动刷新。
Rpc服务:扩展Spring Cloud客户端RestTemplate和OpenFeign以支持调用Dubbo RPC服务。
事件驱动:支持构建与共享消息系统连接的高度可扩展的事件驱动微服务。
分布式事务:支持高性能且易于使用的分布式事务解决方案。
阿里云对象存储:大规模,安全,低成本,高度可靠的云存储服务。支持随时随地在任何应用程序中存储和访问任何类型的数据。
阿里云SchedulerX:准确,高度可靠,高可用性的计划作业调度服务,响应时间在几秒钟内。
阿里云短信:阿里云短信服务覆盖全球,提供便捷,高效,智能的通信功能,帮助企业快速联系客户。

SpringMVC

Mybatis
Mybatis知识总结(超详细、超全面)-CSDN博客

Mybatis-Plus
Mybatis-Plus详解_mybatisplus-CSDN博客

常用组件:
Nacos, Seata, Open Feign, Sentinel, Gateway, Dubbo, OSS, LoadBalance
spring cloud alibaba(看完即入门)——Nacos篇_spring cloud alibaba nacos-CSDN博客
spring cloud alibaba(看完即入门)——Feign篇_spring cloud alibaba feign-CSDN博客
spring cloud alibaba(看完即入门)——Gateway篇_springcloudalibaba gateway-CSDN博客
spring cloud alibaba(看完即入门)——Sentinel篇_spring-cloud-starter-alibaba-sentinel-CSDN博客
spring cloud alibaba(看完即入门)——Seata篇_spring cloud alibaba seata-CSDN博客
Dubbo-CSDN博客
LoadBalance介绍、使用以及源码分析:https://blog.csdn.net/weixin_36152775/article/details/135325594

数据库:
Mysql, Oracle, MongoDB, ElasticSearch, Redis, PostgreSQL, SQL Server
数据库篇:常见数据库MySQL、Mariadb、PostgreSQL、MangoDB、Memcached和Redis详细介绍_mariadb postgresql-CSDN博客
ElasticSearch详解-CSDN博客
Elasticsearch 企业级实战 01:Painless 脚本如何调试?-CSDN博客

持久层框架:
JDBC, DataNucleus, OpenJPA, JDO, Realm, ObjectDB,ORM
Jdbc:
jdbc概念理解:
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
JDBC是Java提供的一个操作数据库的API。
java database connectivity:是java连接数据库技术的统称。
使用jdbc提供的方法,可以发送字符串类型的sql语句到数据库管理软件(MySQL,Oracle等),并且获得语句的执行结果,进而实现数据库数据的crud。
java只提供jdbc的规范(接口)在java.aql和javax.sql包下。具体实现由第三方数据库厂商完成具体的实现驱动代码(jar),实现代码可能不同,但是方法都相同。
jdbc本身就是多态的体现,是面向接口编程的,我们要干的事情是用java的接口去接jdbc的具体实现。(jar包:java程序达成的一种压缩包,你可以将这些jar包导入你的项目中,然后你可以使用这个java程序中的类和方法以及属性)
我们平时使用jdbc进行编程,大致需要下面几个步骤:
1,使用jdbc编程需要连接数据库,注册驱动和数据库信息;
2,操作Connection,打开Statement对象;
3,通过Statement对象执行SQL,返回结果到ResultSet对象;
4,使用ResultSet读取数据,然后通过代码转化为具体的POJO(Plain Old Java Objects,普通的Java对象)对象;
5,关闭数据库相关的资源。
MyBatis(半自动,需要手动写sql)
MyBatis是一个持久层ORM框架,底层是在JDBC的基础上进行了扩展和封装。
持久层:采用DAO模式,建立实体类和数据库表映射(ORM映射)。也就是哪个类对应哪个表,哪个属性对应哪个列。持久层的目的就是,完成对象数据和关系数据的转换。
将内存中的数据保存到数据库中,以防止重启后数据丢失。
Mybatis需要提供的映射文件包含了一下三个部分:
sql,
映射规则,
pojo(Plain Old Java Objects,普通的Java对象)。
在Mybatis里面你需要自己编写sql,可以配置动态sql,同时也可以对sql进行优化,通过配置决定你的sql映射规则,也能支持存储过程,所以对于一些复杂和需要优化性能的sql查询它就更加方便。
Mybatis几乎可以做到jdbc所有能做到的事情。
Hibernate(全自动,不需要写sql)
Hibernate是一个完整的ORM框架,功能更加强大,操作更加简单(性能不好控制),Hibernate是一个完整的ORM框架,使用更加简单,功能更加强大,性能不好控制(中小项目使用的多)
Mybatis也封装了很多的原生的JDBC,是一个半ORM框架,性能可控,mybatis不是完整的ORM框架,需要自己编写SQL语句。

前端技术:
VUE.js, Webpack, React, HTML/CSS/JavaScript, TypeScript
前端2023最全面试题(javaScript、typeScript、vue2、vue3、html、css、uniapp、webpack、vite、react)_前端面试题2023-CSDN博客
开发工具:
IDEA, Git, Docker, Visual Studio Code
消息队列:
RabbitMQ, Apache Kafka
网易终面:4款主流分布式MQ消息队列如何技术选型_51CTO博客_mq 消息队列
数据流与批处理:
Spark, Flink, Flink-CDC, Doris
通信协议:
Http/Https, gRPC, WebSocket, AMQP, MQTT, EMQP
HTTP、WebSocket、STOMP、MQTT 协议_mqtt stomp-CSDN博客
2023 API 生态: Restful, gRPC, GraphQL, WebSocket, SOAP - 简书 (jianshu.com)
身份校验:
OAuth2/OIDC, JWT, TLS/SSL, WAF, Helm
jwt、oauth2和oidc等认证授权技术的理解 - 涂宗勋 - 博客园 (cnblogs.com)
鉴源论坛 · 观辙丨TLS协议基本原理与Wireshark分析 - 知乎 (zhihu.com)
WAF基本原理与部署方式 - 知乎 (zhihu.com)
helm 详解及实践应用全集 - 知乎 (zhihu.com)
监控管理:
Prometheus, Grafana, ELK Stack, Jaeger, Arthas
九大微服务监控工具详解 - 知乎 (zhihu.com)
Prometheus 是一个开源的系统监控、和报警工具包,Prometheus 被设计用来监控“微服务架构”。
主要解决:
1.监控和告警:Prometheus 可以对系统、和应用程序进行实时监控,并在出现问题时发送告警;
2.数据收集和存储:它通过各种方式(如HTTP接口、推送网关......等)收集指标数据,并将其存储在时间序列数据库中。
3.查询和可视化:Prometheus 支持与Grafana等可视化工具的集成,用户可以通过Grafana创建漂亮的仪表盘,以图形化方式展示监控数据。
4.扩展和集成:Prometheus 提供丰富的集成和扩展机制,可以与多种外部系统和工具(如:Kubernetes、Docker、Consul。。。。。等)进行无缝集成。
主要特点:

  • 拉模式(Pull)数据采集;
  • 强大的告警管理;
  • 易于与 Kubernetes 等容器编排工具集成;
    总之,Prometheus 通过其强大的多维数据模型、灵活的查询语言、和可扩展的数据收集方式,成为了现代监控系统中的重要工具。

ELK Stack 是一套开源的日志分析和管理工具集,由 Elasticsearch、Logstash 、和 Kibana 组成。

它们共同工作来收集、处理、存储和可视化日志数据,帮助用户进行实时搜索、分析和监控。
Elasticsearch
Elasticsearch 是一个分布式、RESTful 风格的搜索和分析引擎,基于 Apache Lucene 开发。
它能够处理大规模的数据,并提供高效的实时搜索、和分析能力。
擅长于处理、和存储大规模的结构化、和非结构化数据。
Logstash
一个数据收集和处理管道,用于从多个来源收集数据,进行转换并发送到指定存储(通常是:Elasticsearch)。
Kibana
一个数据可视化工具,提供了丰富的图表、和仪表盘,用于展示、和分析存储在 Elasticsearch 中的数据。
在 ELK Stack 中,Elasticsearch、Logstash 和 Kibana 结合使用,形成一个完整的日志分析和管理解决方案。
SkyWalking
SkyWalking 是一个开源的 APM(应用性能监控)、和 OAP(可观测性分析平台)工具。
主要用于:帮助开发者、和运维人员,实时监控、和分析微服务架构中的性能、和健康状况。

支持分布式追踪、性能指标监控、日志管理等功能。
1.分布式追踪:捕获和分析跨越多个微服务的请求路径,提供端到端的调用链视图;
2.性能监控:监控系统的性能指标,如:响应时间、吞吐量、错误率......等,帮助识别和优化性能瓶颈;
3.日志管理:收集和分析日志数据,提供日志关联追踪,帮助快速定位、和解决问题;
4.服务依赖分析:展示服务之间的调用关系,帮助理解服务间的依赖、和交互。
Grafana
Grafana 是一个开源的数据可视化和监控工具,广泛用于监控基础设施、应用性能,以及业务指标。
通过支持多种数据源(如:Prometheus、Graphite、InfluxDB、Elasticsearch......等),实时监控系统状态、应用性能、和业务指标。
如下图所示:

图片
通过与 Prometheus 等数据源的集成,Grafana 可以提供实时的系统监控和告警,帮助用户及时发现和解决问题,提升系统可靠性、和性能。
主要解决,以下4大场景:

  • 数据可视化:通过丰富的图表、和面板,Grafana 可以将数据源中的数据,以多种图形化方式展示;

图片

  • 监控和告警:除此之外,Grafana 还提供了灵活的告警机制,用户可以基于数据设置告警规则,当条件满足时发送通知;
  • 多数据源支持:支持包括:Prometheus、InfluxDB、Graphite、Elasticsearch、MySQL、PostgreSQL.....等在内的多种数据源;
  • 交互式仪表盘:用户可以创建动态、可交互的仪表盘,支持变量和模板化,方便不同环境下的应用。
    Zipkin
    Zipkin 是一个开源的分布式追踪系统,最初由 Twitter 开发,用于帮助开发者、和运维人员了解微服务架构中请求的传播路径、性能瓶颈、和故障点。
    如下图所示:

图片
Zipkin 收集器接收数据,并将其存储到后台存储中,比如:Elasticsearch、Cassandra、MySQL ...等。
然后,Zipkin 提供 Web UI,展示追踪数据的调用链视图,帮助用户直观地理解请求在各服务间的流动情况。
主要解决,以下4大场景:
1.分布式追踪:捕获、和记录跨越多个服务的请求路径,提供端到端的调用链视图;
2.性能分析:识别请求在各服务间的延迟,帮助优化系统性能;
3.故障排除:快速定位系统中引起错误、或延迟的服务,缩短故障排查时间;
4.可视化追踪数据:通过可视化工具展示请求的传播路径、和各节点的延迟,提供直观的数据分析。
Jaeger
Jaeger 是一个开源的端到端分布式追踪系统,用于监控、和故障排除微服务架构。
主要解决:

  • 追踪请求的路径、和延迟;
  • 分析系统的瓶颈、和性能问题;
  • 可视化请求的完整调用链。
    Datadog
    Datadog 是一个基于 SaaS 的监控和分析平台,覆盖基础设施监控、应用性能监控(APM)、和日志管理。
    主要解决:
  • 实时监控和告警;
  • 整合基础设施和应用数据;
  • 数据可视化、和分析。
    容器化工具:
    Kubernetes, Docker Compose
    Docker中Compose与Kubernetes的区别详解_docker_脚本之家 (jb51.net)
    一文让你全面了解K8s(Kubernetes) - 知乎 (zhihu.com)
    项目管理:
    Jenkins、 Maven、 Gradle、 GitLab、 Jira
    Java 程序员必备的 10 款开发工具,爱不释手! - 知乎 (zhihu.com)
    Linux:
    文件管理,系统管理,打包管理常用指令
    Linux 常用命令最全总结大全【推荐收藏】_linux常用命令-CSDN博客
    测试框架:
    JUnit:【软件测试】JUnit详解-CSDN博客
    Selenium:自动化测试工具:Selenium详解-CSDN博客

BSD

posted on 2024-12-04 10:34  Dinopell  阅读(48)  评论(0)    收藏  举报