PostgreSQL的“孔雀开屏”式程序架构
来源:互联网 发布:什么样的大数据才有用 编辑:程序博客网 时间:2024/04/29 06:49
看着下面这个图, 就想到了“孔雀开屏”。从main开始经过细致、周密的准备,pg启动了postmaster进程、系统日志进程、昙花一现的启动进程、后台写进程、写WAL日志进程、……,最后在服务器段抛出一句”database system is ready to acceptconnections”,开始准备对外提供服务。如果这时有客户端请求,就启动postgres服务进程提供服务。
从main开始,初始化内存上下文、设置时区、设置行政区时间、设置SSL、分配共享内存、在共享内存里初始化一系列对象和设施、设置文件描述、初始化后台进程列表、设置信号处理句柄、加载hba等文件,再加上共同的错误、日志处理模块、内部实现的PG_TRY、PG_CATCH、PG_END_TRY,各进程相同的内存管理机制,还有处理并发的锁机制等等,构成了“孔雀”的体,其中内存上下文每个pg进程都有一套,共享内存由所有进程共同使用。然后启动相关辅助进程和提供服务的postgres服务进程,构成了“孔雀开屏”的“屏”。如果给点并发,这个“屏”就开的更大更炫目了。加上做IPC的文件、管道、信号、共享内存等这些经络,这个“孔雀”活了。
Pg的多进程架构经住了很多严苛场景的考验,如果把其中数据库相关业务逻辑干掉,pg就可以是个不错的通用多进程程序架构,可以在上面填入自己的业务逻辑代码,少花好多精力得了一个非常棒的多进程架构,有需要的可以考虑。要是把fork换成ThreadCreate,稍加改造,这也是个很好的多线程程序架构。
“孔雀开屏”图
------------
转载请著明出处,来自博客:
blog.csdn.net/beiigang
beigang.iteye.com
- PostgreSQL的“孔雀开屏”式程序架构
- 孔雀
- 孔雀
- 孔雀
- 写给开屏传媒的一点意见
- 无入侵的开屏广告插入方式
- 无入侵的开屏广告插入方式
- 无入侵的开屏广告插入方式
- 孤独的人养着一只精神的孔雀
- 孔雀:与时代无关的人性
- 关于app#启动页面#splash页面#开屏广告#的小结
- iOS APP升级开屏图片不更新显示的问题
- 《优雅的插入开屏广告》-- 不改动任何一行代码
- 为什么国外的 App 很少会有开屏广告?
- 经同学推荐, 看电影"孔雀"后的感想
- 开屏倒计时
- PostgreSQL整体架构
- Gitlab 架构---postgresql
- Android系统架构
- clock计时器的使用和随机数的产生
- HDOJ 胜利大逃亡
- java与C#区别整理
- springMVC流程笔记
- PostgreSQL的“孔雀开屏”式程序架构
- Memcached Java Client API详解
- 争用、 较差的性能和死锁时使 ASP.NET 应用程序的 Web 服务请求
- 在 Tomcat 中部署 Java Web 程序 ( jar cvf *.war */. ) war 包
- ES PES TS流的区别
- 页面分页组件开发经验介绍
- memcached协议
- unknown opcode,ARM汇编错误
- Android权限结构和常见问题