微信to-淘宝

 此h5只是验证lulu技术可行性,点击 http://vip100.ltd/Qt0vVjBc 相当于下图立即购买按钮 此h5只是验证lulu技术可行性,点击 https://m.tb.cn/h.UsUePG8 相当于下图立即购买按钮 [1] youjiangaoshan [2] lulu

Golang GMP调度

一、GMP “调度器” 的由来 单进程时代不需要调度器 早期的操作系统每个程序就是一个进程,直到一个程序运行完,才能进行下一个进程,就是 “单进程时代”.自动化控制中的PLC也是典型的单进程操作系统。 多进程 / 线程时代有了调度器需求 典型的操作系统unix/linux,对进程/线程进行了管理。 goroutine是比线程更轻量级的协程 goroutine是golang独有的概念,是为了更少的内存和cpu开销,比线程更加轻量,可以看作是线程的"son".很明显操作系统管理不了,所以出现了GMP. 二、GMP 定义 G=goroutine,M=mechine,P=processor. 三、GMP 模型 在 Go …

并发与并行

为了让程序更好地利用计算机资源,出现了进程/线程,以及并发模式和并行模式的概念。 一、进程和线程 A. 进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位。 B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。 C. 一个进程可以创建和撤销多个线程;同一个进程中的多个线程之间可以并发执行。 二、并发和并行 A. 多线程程序在一个核的cpu上运行,就是并发。 B. 多线程程序在多个核的cpu上运行,就是并行。 如图所示: 三、并发和并行的效率比较 如上图所示,假定任务A/B/C均衡分配,并行效率更高,因为并发切换线程需要cpu开销(图中树立的双虚线)。 但是为什么 …

关系型数据库实践

关系型数据库是绝大多数系统的数据核心,这个关键设施也往往是性能的瓶颈。以下是一些使用建议。 按业务场景设计表结构 业务场景: 一个mysql的用户表,1000万条记录,如何查询出当天生日的用户? 表结构通用规则 所有字段必须非空而且有默认值。 一般都有创建时间和更新时间字段,mysql5.6+ 支持数据库本身更新此字段。 尽可能不使用TEXT、BLOB类型. 表字符集尽量选择UTF8MB4,mysql的utf8不是标准的字符集,utf8mb4可以存储表情字符。 索引字段尽可能使用int/long, 索引为字符型不能超过32个字符。 注释尽量清楚 建表的时候应该考虑最终的数据量,mysql单表应该不超过1000万,分布式数据库按业务字 …

微服务的粒度

得益于nginx等反向代理的流行以及metrics/endpoit规范的成熟。微服务的理念开始流行了。 但是微服务究竟要多"微"才合适?以下是我的个人实践。 不能按接口分: 这样的粒度太细.比如新增订单/查询订单分为两个microservice,优点是可以根据各自的负载合理分配服务器 资源。缺点是microservice数量过多,这样拆分的话,至少存在几十个service,这样对service的依赖关系,监控 /部署都增加很大的难度。 不能按数据库表名(table)分: 这是个鲁莽的做法。很明显,数据库的的事务处理将极为棘手。 不能按数据库名(db)分: 这样的粒度太粗.好处是本地数据库数据一致性问题很好解决。缺 …