OLTP 全称 OnLine Transaction Processing,联机事务处理系统, 就是对数据的增删改查等操作。存储的是业务数据,来记录某类业务事件的发生,比如下单、支付、注册、等等。 典型代表有Mysql、 Oracle等数据库,对应的网站、系统应用后端数据库 针对事务进行操作,对响应时间要求高,面向前台应用的,应用比较简单,数据量相对较少,是GB级别的。 面向群体:业务人员 OLAP 当数据积累到一定的程度,需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取想要的信息,为公司做决策提供支持,这个就是做OLAP了。 OnLine Analytical Processing,联机分析处理系统,存储的是历史数据,对应的风控平台、BI平台、数据可视化等系统就属于OLAP。 OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策,并且提供直观易懂的查询结果 典型代表有 Hive、ClickHouse 针对基于查询的分析系统,基础数据来源于生产系统中的操作数据,数据量非常大,常规....
该文章已经加密。
应用部署演进 传统部署时代 早期的时候,在物理服务器上运行应用程序。缺点: 无法限制在物理服务器中运行的应用程序资源使用,会导致资源分配问题,过高或过低 部署多个物理机,维护许多物理服务器的成本很高。 虚拟化部署时代 虚拟化技术允许在单个物理服务器的 CPU 上运行多台虚拟机(VM)。虚拟化能使应用程序在不同 VM 之间被彼此隔离,且能提供一定程度的安全性,能够更好地利用物理服务器的资源,具有更高的可伸缩性,以及降低硬件成本等等的好处。缺点: 需要单独一个系统,占用资源 不能灵活的扩容和缩容 容器部署时代 容器类似于 VM,但是更宽松的隔离特性,使容器之间可以共享操作系统(OS)。容器比起 VM 被认为是更轻量级的,每个容器都具有自己的文件系统、CPU、内存、进程空间等。跨云和操作系统发行版本的可移植性:可在 Ubuntu、CoreOS、CentOS、 Google Kubernetes Engine 和其他任何地方运行。容器化部署存在的问题: 10 个物理机发布 100 个容器,怎么快速发布和管理 用户请求过来,怎么分配请求到 100 个容器里面 突发海量请求过来,....
大数据 大数据(big data),或称巨量资料,指的是所涉及的资料量规模巨大到无法透过主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。 在维克托·迈尔-舍恩伯格及肯尼斯·库克耶编写的《大数据时代》中大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。大数据的5V特点(IBM提出):Volume(大量)、Velocity(高速)、Variety(多样)、Value(低价值密度)、Veracity(真实性)。 人工智能 人工智能(Artificial Intelligence),英文缩写为AI。是新一轮科技革命和产业变革的重要驱动力量,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。 人工智能是智能学科重要的组成部分,它企图了解智能的实质,并生产出一种新的能以与人类智能相似的方式做出反应的智能机器。人工智能是十分广泛的科学,包括机器人、语言识别、图像识别、自然语言处理、专家系统、机器学习,计算机视觉等。 **人工智能大模型带来的治理挑战也不容忽视。**马斯克指出,在人工智能机器学习面具....
定时任务 通过时间表达式这一方式来进行任务调度的被称为定时任务。 在平常的业务场景当中,经常有一些场景需要使用到定时任务,比如:在某个时间点会发送优惠券、发送短信等等的一些业务操作。又比如:比如一些支付系统,需要在每天的凌晨1点来进行对前一天的清算。 分类 单机定时任务 单机的容易实现,但应用于集群环境做分布式部署,就会带来重复执行 解决重复执行的方案有很多,比如加锁、数据库等,但是增加了很多非业务逻辑 分布式调度(分布式定时任务) 把需要处理的计划任务放入到统一的平台,实现集群管理调度与分布式部署的定时任务 叫做分布式定时任务 支持集群部署、高可用、并行调度、分片处理等 常见定时任务 单机:Java 自带的 java.util.Timer 类配置比较麻烦,时间延后问题 单机:ScheduledExecutorService 是基于线程池来进行设计的定时任务类,在这里每个调度的任务都会分配到线程池里的一个线程去执行该任务,并发执行,互不影响 单机:SpringBoot 框架自带 SpringBoot 使用注解方式开启定时任务 启动类里面 @EnableSc....
为什么要序列化? 序列化:把对象转化为可传输的字节序列过程称为序列化。 反序列化:把字节序列还原为对象的过程称为反序列化。 如果光看定义我想你很难一下子理解序列化的意义,那么我们可以从另一个角度来推导出什么是序列化, 那么究竟序列化的目的是什么? 其实序列化最终的目的是为了对象可以跨平台存储,和进行网络传输。而我们进行跨平台存储和网络传输的方式就是IO,而我们的IO支持的数据格式就是字节数组。 因为我们单方面的只把对象转成字节数组还不行,因为没有规则的字节数组我们是没办法把对象的本来面目还原回来的,所以我们必须在把对象转成字节数组的时候就制定一种规则(序列化),那么我们从IO流里面读出数据的时候再以这种规则把对象还原回来(反序列化)。 如果我们要把一栋房子从一个地方运输到另一个地方去,序列化就是我把房子拆成一个个的砖块放到车子里,然后留下一张房子原来结构的图纸,反序列化就是我们把房子运输到了目的地以后,根据图纸把一块块砖头还原成房子原来面目的过程。 MQ 使用场景 跨平台 、多语言、分布式事务、最终一致性 RPC调用上下游对接,数据源变动->通知下属 解耦:订单系统....
日志注意事项 日志颗粒度:(级别:DEBUG、INFO、WARNING、ERROR等) 日志格式化:方便阅读分析(时间戳、日志级别、请求ID、模块名称、错误信息等,统一使用Log4j、logback等) 异常处理:(捕获异常错误信息、堆栈跟踪等,以便于日后排查) 日志存储和管理:输出到文件、数据库、日志服务器等,确保合理的日志轮转和备份策略,有效的日志管理和监控机制。 敏感信息保护:在日志输出时,注意敏感信息的处理,如密码、个人身份信息等,应进行脱敏处理或者在合适的级别下去除。 日志审计和安全:对于敏感操作或重要日志事件,可以考虑加入审计日志,记录相关的操作细节和安全事件,以便追踪和监控系统的安全性。 性能影响:日志输出可能对系统的性能产生一定的影响,要谨慎选择日志输出的频率和内容,避免频繁的输出大量冗余信息。 异步日志:尽量采用异步方式进行,避免阻塞主线程,可以利用线程池等机制一部处理日志消息。(Logback默认情况下是同步输出日志,可以调整配置) SpringBoot3.X整合logback配置示例 SLF4J(Simple Logging Facade for Java) 把不....