本文针对 Flink 的架构进行分析
架构设计 全链路压测平台建设
全链路压测平台,它的目标是对全公司所有业务,提供单服务、全链路,安全、高效、准确、高覆盖的压测,来帮助业务高效便捷的完成性能测试任务,更精确评估线上服务性能和容量方面风险。
- 安全:所有压测都是在线上完成的,所以理论上所有的压测对线上用户都是有损的。压测平台将从服务状态,以及压测数据两方面去保证压测的安全性。
- 高效:较少压测脚本编写成本,数据构造和压测监控成本,尽量自动化完成压测过程的各个阶段。
- 准确:精确的压力控制,准确的链路压测监控,精确的压测报告结果,以及性能&容量数据。
- 高覆盖:需要支撑公司内不同的业务线的压测需求,如搜索,广告,电商,教育,游戏等等。
MySQL 时区造成的时间错位
MYSQL 时区问题现象及排查过程。
Middleware DTO映射 MapStruct
MapStruct
是一个代码生成器,它基于约定优于配置方法极大地简化了 Java bean
类型之间映射的实现。自动生成的映射转换代码只使用简单的方法调用,因此速度快、类型安全而且易于理解阅读,源码仓库 Github
地址 MapStruct。总的来说,有如下三个特点:
- 基于注解
- 在编译期自动生成映射转换代码
- 类型安全、高性能、无依赖性
Middleware 数据库增强 ShardingSphere
Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。
Tomcat Coyote组件
Catalina 是 Tomcat 提供的 Servlet 容器实现,它负责处理来自客户端的请求并输岀响应。但是仅有 Servlet 容器服务器是无法对外提供服务的,还需要由链接器接收来自客户端的请求,并按照既定协议(如HTTP)进行解析,然后交由 Servlet 容器处理。可以说,Servlet 容器和链接器是 Tomcat 最核心的两个组件,它们是构成一款 Java 应用服务器的基础。
Tomcat Catalina组件
Catalina 是 Tomcat 的 Servlet 容器实现。对于 Tomcat 来说,Servlet 容器是其核心组件。所有基于 JSP/Servlet 的 Java Web 应用均需要依托 Servlet 容器运行并对外提供服务。
JSON Jackson序列化库 注解篇
Jackson 是一个简单的、功能强大的、基于 Java 的应用库。它可以很方便完成 Java 对象和 Json 对象进行互转。Jackson社区相对比较活跃,更新速度也比较快。
Jackson库有如下几大特性:
- 高性能且稳定:低内存占用,对大/小JSON串,大/小对象的解析表现均很优秀
- 流行度高:是很多流行框架的默认选择
- 容易使用:提供高层次的 API,极大简化了日常使用案例
- 无需自己手动创建映射:内置了绝大部分序列化时和 Java 类型的映射关系
- 干净的 JSON:创建的 JSON 具有干净、紧凑、体积小等特点
- 无三方依赖:仅依赖于 JDK
- Spring生态加持:Jackson 是 Spring 家族的默认 JSON/XML 解析器
Spring 缓存解决方案
伴随信息量的爆炸式增长以及构建的应用系统越来越多样化、复杂化,特别是企业级应用互联网化的趋势,缓存(Cache)对应用程序性能的优化变的越来越重要。 将所需服务请求的数据放在缓存中,既可以提高应用程序的访问效率,又可以减少数据库服务器的压力,从而让用户获得更好的用户体验。
Spring 从 3.1 开始,以一贯的优雅风格提供了一种透明的缓存解决方案,这使得 Spring 可以在后台使用不同的缓存框架(如EhCache、GemFire、HazelCast 和 Guava)时保持编程的一致。
Spring 从 4.0 开始则全面支持 JSR-107 annotations 和自定义的缓存标签。
ElasticSearch 搜索操作
ElasticSearch 提供的搜索功能有单条件查询、复合查询、全文查询、地理位置查询四大类,而且提供了搜索建议和一些辅助功能。