09 Aug 2016
Swoole2.0 alpha版发布,大家可能会有个疑惑, Zan的协程框架是不是要关门大吉了呢? 答案当然是否定的。 Zan和Swoole2.0走的方向是不一样的; Swoole2.0的方向是希望和Golang一较高下; Zan的定位是搭建一个Zan + Golang的生态; Swoole2.0 鸟哥的出现确实让国人在技术界猛的一抬头。 天峰的Swoole也备战了很多年,任重道远。 Zan目前是基于Swoole搭建的,和2.0并没有什么冲突。 大家一起努力吧。 重申下Zan的定位: Zan 的定位是高并发 Web…
Read More
03 Aug 2016
章节 ① 什么是Cache? Cache的目标? ② Caching住哪些内容? ③ 我们想要的Cache产品 ④ Cache使用方式 ⑤ 对于总体系统的提高 ⑥ 关于Sharding ⑦ Cache痛点和关注点 ⑧ 我们用的Cache的产品 ⑨ 我们的一些实践 ① 什么是Cache? Cache的目标? 在说这个之前我们先看下典型Web 2.0的一些架构演变(这里不用”演进”). 从简单的到复杂的通用架构. 首先, 诚然说Cache在互联网公司里,是一个好东西. Cache化,可以显著地提高应用程序的性能和便于提供应用程序的伸缩性(可以消除不必要请求落到外在的不频繁改变数据的DataSource上)…
Read More
02 Aug 2016
一、有赞是干嘛的 2012年11月27日,有赞在杭州贝塔咖啡开始孵化,现在已经成为服务罗辑思维、读库、良品铺子等200万商户的中国领先的移动零售服务商。目前有赞的业务有:有赞批发、有赞分销、有赞微商城、有赞C端入口等。几乎所有的微信用户,他关注的微信公众号里就至少有一个是使用有赞来搭建、维护、管理的。此外还有大量第三方独立APP在使用有赞。 “第三方独立APP” 怎么使用有赞?举个例子:很多独立的APP,比如喜马拉雅、比如一些母婴APP,它有流量,如何变现呢?…
Read More
28 Jul 2016
背景 Haunt是有赞内部使用的服务发现系统,下面会详细介绍一下该系统的设计与思考。 首先,我们设想一下,我们提供的RESTful API或者其他API的服务,为了完成一次服务请求,服务调用方需要知道服务实例的网络位置(IP地址和端口)。传统应用都运行在物理硬件上,服务实例的网络位置都是相对固定的。比较常见的做法是,服务调用方可以从一个经常变更的配置文件中读取网络位置。而对于一个现代的,基于云端微服务的应用来说,这却是一个很麻烦的问题。如下图所示: PaaS平台中的应用一般都有多个实例,实例故障重启透明化与负载均衡都与服务发现密切相关。通过服务发现机制,可以透明的对多个实例进行访问,并实现负载均衡。而且应用的某个实例随时都可能故障重启,这时就需要动态配置服务调用方的路由信息。…
Read More
15 Jun 2016
引言 经常有人问这样的问题:“我们在做单元测试,那测试覆盖率要到多少才行?”。答案其实很简答,“作为指标的测试覆盖率都是没有用处的。” Martin Fowler(重构那本书的作者)曾经写过一篇博客来讨论这个问题,他指出:把测试覆盖作为质量目标没有任何意义,而我们应该把它作为一种发现未被测试覆盖的代码的手段。 代码覆盖率的意义 分析未覆盖部分的代码,从而反推在前期测试设计是否充分,没有覆盖到的代码是否是测试设计的盲点,为什么没有考虑到?需求/设计不够清晰,测试设计的理解有误,工程方法应用后的造成的策略性放弃等等,之后进行补充测试用例设计。 检测出程序中的废代码,可以逆向反推在代码设计中思维混乱点,…
Read More