首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【连载】如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(1)

    OLTP(联机事务处理系统)以高并发读写为主,数据实时性要求非常高,数据以行的形式组织,最适合面向外存设计的行存储引擎。随着内存逐渐变大,服务器上万亿字节(TB)大小的内存已经很常见,内存引擎面向大内存而设计,提高系统的吞吐量和降低业务时延。OLAP联机数据分析处理系统主要面向大数据量分析场景,对数据存储效率、复杂计算效率的要求非常高。列存储引擎可以提供很高的压缩比,同时面向列的计算,CPU指令高速缓存和数据高速缓存的命中率比较高,计算性能比较好,按需读取列数据,大大减少不必要的磁盘读取,非常适合数据分析场景。openGauss整个系统设计是可插拔、自组装的,并支持多个存储引擎来满足不同场景的业务诉求,目前支持行存储引擎、列存储引擎和内存引擎。

    01

    linux 系统调用 write 的原子性

    开始阅读 nginx 源码的时候就一直伴随着一个问题,那就是多进程的 nginx 模型是怎么保证多个进程同时写入一个文件不发生数据交错呢? 猜想中,主要有以下几种解决方案: 1. 最传统的,正在写文件的进程加锁,其他进程等待,但是这样的情况是绝对不允许的,效率太过低下 2. 写 log 前测试锁状态,如果已经锁定,则写入进程自己的缓冲区中,等待下次调用时同步缓冲区,这样做的好处是无需阻塞,提高了效率,但是就无法做到 log 的实时了,这样做工程中也是绝对无法接受的,一旦发生问题,将无法保证 log 是否已经被写入,因此很难定位 3. 一个进程专门负责写 log,其他进程通过域套接字或者管道将 log 内容发送给他,他持续阻塞在 epoll_wait 上,直到收到信息,立即写入,但是众所周知,nginx 是调用同一个函数启动所有进程的,并没有专门调用函数启动所谓的 log 进程,除了 master 和 worker,nginx 也确实没有 log 进程存在 4. 那么就是进程启动后,全部去竞争某个锁,竞争到该锁的 worker 执行 log worker 的代码,其余的 worker 继续运行相应程序,这个方案看上去是一个不错的方案,如果是单 worker 的话,那么就无需去使用该锁即可

    06

    go实现高并发高可用分布式系统:log微服务的实现

    在大数据时代,具备高并发,高可用,理解微服务系统设计的人员需求很大,如果你想从事后台开发,在JD的描述中最常见的要求就是有所谓的“高并发”系统开发经验。但我发现在市面上并没有直接针对“高并发”,“高可用”的教程,你搜到的资料往往都是只言片语,要不就是阐述那些令人摸不着头脑的理论。但是技术的掌握必须从实践中来,我找了很久发现很少有指导人动手实践基于微服务的高并发系统开发,因此我希望结合自己的学习和实践经验跟大家分享一下这方面的技术,特别是要强调具体的动手实践来理解和掌握分布式系统设计的理论和技术。

    03

    Spring使用 --- 基本概念(二):AOP,面向方面编程

    本文讲述sprint的第二个基本概念: AOP,即面向方面编程 什么是面向方面编程 软件项目中,日志系统等服务系统被核心功能系统调用,日志系统的代码分散在各处。面向方面编程将日志等服务系统独立出来,作为单独一个模块,形成一个“方面”。然后通过一些手段将日志与核心代码再联系起来,叫做“织入”。由此将原来混杂在一起的代码分离成单独的模块,代码质量提高,模块内聚性更高,核心模块专注于处理核心业务流程,而不需要关注不相关的东西,如记录日志、考虑安全等因素。 通过面向方面编程,模块可以更加独立。只要不是本模块需要做

    05
    领券