
架构
文章平均质量分 96
smallhow
目前在腾讯任职,曾在华为、恒生担任C/C++开发工程师,在wps担任项目经理,在360担任技术专家。
展开
-
局部性原理在php、mysql、kafka的实际应用
何为局部性原理 工作已经快10年的时间,看了很多各种技术书籍,总结了其中一些共性,其中就有一点,在系统性能方面,尤其是存储方面,局部性原理都在其中扮演着非常重要的角色,比如PHP5到PHP7的优化、比如MySQL索引、kafka的page cache 的应用等等,都或多或少夹杂着局部性原理在其中的应用。 那么,究竟什么是局部性原理?这里一般分为2种: 时间局...原创 2020-03-09 10:26:09 · 1533 阅读 · 0 评论 -
PHP性能提升的几个方法
...原创 2019-10-25 11:39:08 · 492 阅读 · 0 评论 -
轻量级高性能PHP框架ycroute(中级): 基于yar的RPC服务 - 像调用本地函数一样调用远程函数
目录框架介绍运行环境代码结构路由配置过滤验签控制层加载器模型层数据交互dao层(可选)Redis缓存操作数据库操作配置加载公共类加载公共函数日志模块视图层RPC 介绍 - 像调用本地函数一样调用远程函数RPC ServerRPC ClientRPC 并发调用附录 - Core_Model 中的辅助极速开发函数RPC 介绍 - 像调用本地函数一样调用远...原创 2019-02-14 19:26:19 · 1609 阅读 · 2 评论 -
轻量级高性能PHP框架ycroute(高级):集成分布式配置中心QConf
目录:QConf介绍 QConf优点 QConf架构 zookeeper 安装 QConf安装部署 使用QConf QConf管理界面安装 PHP SDK 扩展 分集群配置 - 不同环境,不同配置 与YCRoute框架集成 - db/redis配置化 灰度发布QConf介绍: QConf 是奇虎360开源的一款分布式配置中心。是一款非常成熟的系统组件,运行3年多...原创 2019-02-17 12:47:05 · 1903 阅读 · 0 评论 -
轻量级高性能PHP框架ycroute(初级): MVC 框架与各大组件
目录框架介绍运行环境代码结构路由配置过滤验签控制层加载器模型层Redis缓存操作数据库操作配置加载公共类加载公共函数日志模块视图层附录 - Core_Model 中的辅助极速开发函数框架介绍框架由3层架构构成,Controller、Model、View 层,支持PHP7,优点如下:1、框架层次分明、使用简洁(开箱即用)、功能强大。2、基于 yaf 路由和...原创 2019-02-12 10:29:53 · 1355 阅读 · 0 评论 -
基于swoole的轻量级socket框架(含协程版数据库/缓存连接池)
ycsocket基于 swoole 和 ycdatabase 的 websocket 框架,各位可以自己扩展到 TCP/UDP,HTTP。在ycsocket 中,采用的是全协程化,全池化的数据库、缓存IO,对于IO密集型型的应用,能够支撑较高并发。项目github地址: https://github.com/caohao-php/ycsocket文档暂时未写全,后续有时间了再完善。环境:...原创 2019-04-02 09:40:35 · 1356 阅读 · 0 评论 -
基于swoole协程通道的Actor模型(高并发事务)
Actor 模型介绍在高并发环境中,为了保证多个进程同时访问一个对象时的数据安全,我们通常采用两种策略,共享数据和消息传递,使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争(data race)。处理各种锁的问题是让人十分头痛的一件事,锁限制了并发性, 调用者线程阻塞带来的浪费,用的不好,还容易造成死锁。和共享数据方式相比,消息传递机制最大的优点就是不会产生数据竞争状态(dat...原创 2019-05-13 10:42:44 · 1717 阅读 · 0 评论 -
C语言PHP扩展高性能数据库ORM框架ycdb(3) : 稳定的Redis连接池
上一章:C语言PHP扩展高性能数据库ORM框架ycdb(2): 构建稳定的数据库连接池目录:Instruction Requirement 创建测试表 在linux中编译ycdb Start ycdatabase 初始化ycdb连接 原生SQL执行 错误处理 Where 语句 Select 语句 Insert 语句 Replace 语句 Update 语句 Del...原创 2019-01-03 10:26:00 · 1105 阅读 · 4 评论 -
C语言PHP扩展高性能数据库ORM框架ycdb(2) : 构建稳定的数据库连接池
上一章:C语言PHP扩展高性能数据库ORM框架ycdb(1) : SQL生成器下一章:C语言PHP扩展高性能数据库ORM框架ycdb(3): 稳定的Redis连接池目录:Instruction Requirement 创建测试表 在linux中编译ycdb Start ycdatabase 初始化ycdb连接 原生SQL执行 错误处理 Where 语句 Select ...原创 2018-12-25 23:25:15 · 8495 阅读 · 5 评论 -
一文看懂 kafka 机制
Kafka的特性- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。- 可扩展性:kafka集群支持热扩展- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)...原创 2018-07-07 13:56:39 · 4337 阅读 · 0 评论 -
深入详解美团点评CAT跨语言服务监控(一) CAT简介与部署
下一篇: CAT跨语言服务链监控(二) CAT服务端初始化前言: CAT是一个实时和接近全量的监控系统,它侧重于对Java应用的监控,除了与点评RPC组件融合的很好之外,他将会能与Spring、MyBatis、Dubbo 等框架以及Log4j 等结合,支持PHP、C++、Go等多语言应用,基本接入了美团点评上海侧所有核心应用。目前在中间件(MVC、RPC、数据库、缓存等)框架中得到...原创 2018-07-02 12:50:45 · 23910 阅读 · 14 评论 -
深入详解美团点评CAT跨语言服务监控(三)CAT客户端原理
上一篇:CAT跨语言服务链监控(二) CAT服务端初始化 下一篇:CAT跨语言服务链监控(四)服务端消息分发CAT客户端实现cat客户端部分核心类message目录下面有消息相关的部分接口internal目录包含主要的CAT客户端内部实现类; io目录包含建立服务端连接、重连、消息队列监听、上报等io实现类; spi目录为上报消息工具包,包含消息二进制编解码、...原创 2018-07-02 13:30:54 · 10190 阅读 · 4 评论 -
深入详解美团点评CAT跨语言服务监控(四)服务端消息分发
上一篇:CAT跨语言服务链监控(三)CAT客户端原理 下一篇:CAT跨语言服务链监控(五)配置与数据库操作这边首先介绍下大众点评CAT消息分发大概的架构如下: 图4 消息分发架构图 分析管理器的初始化 我们在第一章讲到...原创 2018-07-02 19:41:12 · 3825 阅读 · 2 评论 -
深入详解美团点评CAT跨语言服务监控(五)配置与数据库操作
上一篇:CAT跨语言服务链监控(四)服务端消息分发 下一篇:CAT跨语言服务链监控(六)消息分析器与报表(一)CAT配置在CAT中,有非常多的配置去指导监控的行为,每个配置都有相应的配置管理类来管理,都有一个配置名, 配置在数据库或者配置文件中都是以xml格式存储,在运行时会被解析到具体实体类存储。我们选取一个配置的初始化代码来分析:public class ...原创 2018-07-03 17:26:07 · 4329 阅读 · 0 评论 -
深入详解美团点评CAT跨语言服务监控(六)消息分析器与报表(一)
上一篇:CAT跨语言服务链监控(五)配置与数据库操作 下一篇:CAT跨语言服务链监控(七)消息分析器与报表(二)大众点评CAT微服务监控架构对于消息的具体处理,是由消息分析器完成的,消息分析器会轮训读取PeriodTask中队列的消息来处理,一共有12类消息分析器,处理后的结果就是生成各类报表。 消息分析器的构建在周期Period构造函数中,我们会通过m_ana...原创 2018-07-04 19:52:09 · 3619 阅读 · 0 评论 -
深入详解美团点评CAT跨语言服务监控(七)消息分析器与报表(二)
上一篇:CAT跨语言服务链监控(六)消息分析器与报表(一) 下一篇:CAT跨语言服务链监控(八)报表持久化CrossAnalyzer-调用链分析 在分布式环境中,应用是运行在独立的进程中的,有可能是不同的机器,或者不同的服务器进程。那么他们如果想要彼此联系在一起,形成一个调用链,在Cat中,CrossAnalyzer会统计不同服务之间调用的情况,包括服务的访问...原创 2018-07-05 10:33:06 · 3654 阅读 · 0 评论 -
深入详解美团点评CAT跨语言服务监控(九)CAT管理平台MVC框架
上一篇:CAT跨语言服务链监控(八)报表持久化 在第2章我们讲到,服务器在初始化CatServlet 之后, 会初始化 MVC,MVC也是继承自AbstractContainerServlet , 同样也是一个 Servlet 容器,这是一个非常古老的MVC框架,当时Spring MVC 还并不成熟,但是所有MVC框架的核心思想都是一致的。 在初始化完Ca...原创 2018-07-05 20:25:11 · 3304 阅读 · 9 评论 -
深入详解美团点评CAT跨语言服务监控(八)报表持久化
上一篇:CAT跨语言服务链监控(七)消息分析器与报表(二) 下一篇:CAT跨语言服务链监控(九)CAT管理平台MVC框架周期结束 我们从消息分发章节知道,RealtimeConsumer在初始化的时候,会启动一个线程,每隔1秒钟就去从判断是否需要开启或结束一个周期(Period),如下源码,如果 value < 0 的时候,就会启动一个周期结束线程,线程会调用...原创 2018-07-05 20:24:54 · 2869 阅读 · 0 评论 -
深入详解美团点评CAT跨语言服务监控(二) CAT服务端初始化
上一篇:CAT跨语言服务链监控(一) CAT简介与部署 下一篇:CAT跨语言服务链监控(三)CAT客户端原理 Cat模块 Cat-client : cat客户端,编译后生成 cat-client-2.0.0.jar ,用户可以通过它来向cat-home上报统一格式的日志信息,可以集成到 mybatis、spring、微服务 dubbo 的监控等等流行框架...原创 2018-07-02 12:51:24 · 8153 阅读 · 6 评论