Dubbo性能调优 | 伈情的博客

作者:JerryXia | 发表于 , 阅读 (0)
性能优化dubbo序列化+netty目前客户端数据接口的场景99%为1k数据量以内,根据各种协议性能测试对比分析,选用dubbo序列化与netty传输方式可达到性能最大化,以下为阿里官方给出的性能测试结果,提供参考:
1k string 场景:

netty线程池配置经过线上生产环境压力测试(服务器48核,由于CPU为AMD,单核处理能力偏低),评估后最优线程数配置为500,采用固定大小的线程池,计算密集型服务可最大分配8核,IO密集型服务最大分配4核。
线上2016年1月31日系统无法接入请求故障维持4个多小时,排查后发现后端BOSS系统处理能力有限,且响应时间过长,导致线程满负荷状态下切配置队列的情况下,线程池打满后,请求全部进入队列排队,请求与处理能力严重失衡,导致队列很快也被打满,所有请求无法接入,服务呈现不可用状态,再经过分析后,决定去掉队列且将连接超时时间由12秒缩短为5秒,舍弃BOSS系统响应超过5秒的请求,对用户侧进行友好提示,保证BOSS响应低于5秒的用户可正常使用。
配置策略:1<dubbo:protocol name="dubbo" port="${du...阅读全文

分布式事务 | 伈情的博客

作者:JerryXia | 发表于 , 阅读 (0)
分布式事务场景如何设计系统架构及解决数据一致性问题,个人理解最终方案把握以下原则就可以了,那就是:大事务=小事务(原子事务)+异步(消息通知),解决分布式事务的最好办法其实就是不考虑分布式事务,将一个大的业务进行拆分,整个大的业务流程,转化成若干个小的业务流程,然后通过设计补偿流程从而考虑最终一致性。
What’s 事务事务(Transaction)及其ACID属性
事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性:
原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,要么全都执行,要么全都不执行。一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味着所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性;事务结束时,所有的内部数据结构(如B树索引或双向链表)也都必须是正确的。隔离性(Isoation):数据库系统提供一定的隔离机制,保证事务在不受外部并发操作影响的“独立”环境执行。这意味着事务处理过程中的中间状态对外部是不可见的,反之亦然。持久性(Durabe):事务完成之后,它对...阅读全文

用UIKit Dynamics模仿UIScrollView

作者:JerryXia | 发表于 , 阅读 (0)
 authored by PhilCai
饿了么在上个版本的时候对餐厅页做了很大的改动, 无论是视觉上还是交互上都有很不错的效果. 为了实现这种效果, 我们自己用UIPanGestureRecognizer和UIKit Dynamics模拟了系统的UIScrollView, 包括惯性滚动, 弹性, 橡皮筋(RubberBanding)效果.
在刚接到这个任务的时候, 有过几种想法:
这个效果很像是UITableView加上Header的Parallel效果可以在一个UIScrollView上面嵌套一个UITableView作为子视图这些方案都被否决了. 第一种方案, 因为当前页面不仅有两个TableView(食物类别和菜单), 而且要支持左右滚动在”商品”, “评价”, “详情”三个页面切换. 用TableView的header做视差效果是不太可能做到的. 对第二种方案, 是在-[UIScrollViewDelegate scrollViewDidScroll:]中再手动修改其中一个ScrollView的contentOffset, 使得当前的两个scrollView的conte...阅读全文

详解 iOS 8 `UIPresentationController` Custom Presentation

作者:JerryXia | 发表于 , 阅读 (0)
 authored by axl411
现在大多数 app 都已经支持 iOS 7+ 有一段时间了,距离支持 iOS 8+ 的时间也是屈指可数(希望如此…)了。iOS 8 新增的 API 中有一个 UIPresentationController 一直比较陌生,本文将简略介绍使用 UIPresentationController 来实现一个自定义 presentation 的过程,然后详细解读 UIKit 是如何操作这一过程以及我们能够如何地参与其中。
Final Result下图是 demo 的效果:黄色背景的 view controller (之后简称vc)present 了一个红色背景的 vc,present 的过程是自定义的,红色背景的 vc 被 present 出来后没有占满整个屏幕,周围有一圈黑色半透明背景可以透视看到黄色 vc。
ImplementationDemo 的效果用 iOS 7 的自定义 presentation 动画的 API 就能够实现,只需要使 presented vc 的背景色是黑色半透明,然后在上面加一个比自己 view 小一圈的红色区域就行。这...阅读全文

android APP 瘦身

作者:JerryXia | 发表于 , 阅读 (0)
 authored by JackCho
随着饿了么业务的快速发展,直接面向用户的APP的功能也越来越多,APP的体积也随之增长。虽然我们研发一直在有意识的从代码和资源角度打磨产品,但是仍是不能比较可观的抑制体积的增长,经历整个2015年多个版本的迭代,增长了一倍不止。所以到了这个时候,为了更小的减少用户升级更新的成本,APP瘦身之旅势在必行。下面将根据不同的瘦身角度来实战分析。 
1、PNG  1.切图只要xxhdpi      基于数据分析,绝大多数用户的设备分辨率都是2x、3x,      在切图方面只选取xxhdpi一套图,通过在不同分辨率的机器上测试,UI效果以及内存开销都可以接受
2.切图技巧      大尺寸的切图,可考虑分切成多个小图片      不需要alpha通道的图片,可以考虑使用jpg      如果minsdk为4.2.1+,可以考虑把png全部换成webp;低版本可以通过第三方webp解码lib使用
3.切图压缩      切图统一压缩,以防万一,在release打包的时候,再一次性压缩。      压缩的工具可以选取TinyPng、ImageMag...阅读全文