【CSDN直播报道】2015年11月19-21日,“2015中国软件开发者大会”(以下简称SDCC 2015))在北京西山花园朗丽兹酒店召开。今年是第七届,大会为期三天。除了阵容强大的全会,主办方还精心准备了九个专题技术论坛,包括:架构实践论坛、前端开发论坛、数据库实践论坛、研发管理论坛、安全技术论坛、算法实践论坛、编程语言论坛、产品与设计论坛、微信开发论坛。此外,还有五项特别活动和展览。
图:架构实践论坛座无虚席
下午13:30,架构实践论坛在原百行网联合创始人、CTO潘晓亮的主持下继续进行。产品架构变化和优化实践经验。
小米网络研发部负责人兼架构师张涛:小米网络架构变革实践
张涛详细讲解了小米网络架构如何解决秒杀、拦截黄牛、库存等用户的硬性需求。第一代小米网快速、简单、好用。官网、订单处理、仓储物流、售后等所有系统共用一个数据库。随着系统间调用的增多,形成网络结构,耦合越来越严重。演变为星型结构,发展为调度层、业务层、数据层三层结构。
图:小米网研发部负责人兼架构师张涛
技术和业务拓展给小米网的架构建设带来了双重挑战。如何管理以实现最佳成本和最高效率?小米网使用Go、MCC、Nginx、PHP、LVS进行“业务垂直切割、平台横切”的开发。其通用缓存采用Twemproxy+redis搭建,速度快(单节点14万QPS),可扩展(自动分片),稳定,异步消息服务支持大量消息通信,分钟级消息传递,自定义消息索引和协议,允许无限的消息堆积。同时,通过虚拟化技术,降低成本,提高计算资源利用率,业务系统设计更具可扩展性。
途牛旅游网研发总监高健:途牛网站无线架构的变迁
途牛旅游网研发总监高健从服务的提升、京南机房之痛、性能提升的实践、网络演进四个方面阐述了途牛网站无线架构的变化。应用客户端技术。
图:途牛网研发总监高健
以计价服务为例,四种架构对比如下:
同步——通过接口交互:其他系统通过调用接口通知价格中心发起操作,价格中心通过接口获取其他系统依赖价格的所有资源;异步——价格中心通过MQ交互,依靠数据库获取其他系统的价格计算分两个阶段:首先计算资源成本价格(一种资源的多个供应商),然后计算产品的最低价格;分库分表,根据产品的访问频率区分冷热数据的计算频率,三维(产品+团期、行程、资源);数据库,使用Sharding MQ(本地访问,本地计算),Unix域通信(本地通信,提高通信效率)。
图:途牛旅游App插件开发框架
从最初的主项目包括所有模块,属于同一个仓库,代码之间的高耦合,没有对公共库的抽象qq技术论坛,不利于多个团队的协同开发,到不同插件的独立模块属于不同的团队,最后全部集成到主项目中。途牛App客户端经历了插件开发的进化,引入了阿里巴巴开源的AndFix框架,解决了在线热补丁修复问题。
快的高级架构师王晓雪:快的出租车建筑实践
快的高级架构师王晓雪详细分析了快的从2012年上线到今年与滴滴合并前后的架构实践和演变。从V1的车间式研发和基础功能的可用性,到V2中核心环节的优化保障主要业务流程的正常运行,到V3阶段的系统架构改造,在业务快速增长的背景下,快速建立研发流程,代码规范,故障问责机制,实施严格的代码审查,梳理链路上的单点和性能瓶颈,建立服务降级机制,对工程进行小规模迭代重构、分布式改造结构。
图:快的高级架构师王晓雪
以RPC选择为例,在大规模服务之前,应用程序可以简单地通过RPC工具暴露和引用远程服务qq技术论坛,通过配置服务地址来调用。但是,简单的 RPC 是不够的,除了网络通信和数据序列化,大规模分布式 RPC 还应该具备服务注册和发现、降级和容量管理、资源管理等其他要素。对此,快快结合实际应用场景,介绍了开源的分布式RPC框架——Dubbo,并分享了快快使用Dubbo踩到的一些坑:
client->A(timeout:3s),A->B(timeout:3s),A->C(timeout:3s)。 B 是非关键服务,C 是关键服务。 B不可用时,A傻等3秒,最后超时,服务不可用; B变慢,高峰期A线程耗尽,服务不可用。
提供商 A 提供关键服务 A1 和非关键服务 A2。高峰时段,A2消耗大量时间,线程池满,导致A1无法提供服务。
图:Dubbo 架构
Provider内存使用不当导致fullgc频繁,触发Zookeeper超时下线。 Provider fullgc完成后,向zk注册自己,过一段时间再fullgc注册。
使用zookeeper作为注册中心,配置的注册中心地址只写ip和port,没有配置注册中心协议,导致使用默认的Dubbo协议。
调用服务时会出现此异常,因为该服务的所有实例都处于离线状态。
配置的log4j不在debug级别,但是应用中出现大量debug日志。 zookeeper 3.4.3的日志系统是slf4j,应用也依赖聊天logback。 StaticLoggerBinder.getSingleton加载logback配置,默认为debug级别,log4j不生效。
图:快速实时数据中心架构
同时,快穗对数据层进行了改造,通过分库分表解决了前台应用的性能问题,通过数据同步解决了多库多表规范化问题。但随着时间的推移,后台单库的问题越来越严重。为此,快的设计了基于HBase和数据同步的实时数据中心,支持二级索引,并设计了SQL解析模块,减少后台应用层的变化。
58赶集集团系统架构师兼技术总监孙轩:58高性能移动推送平台架构演进
58赶集集团系统架构师兼技术总监孙轩开启了“为什么需要移动推送”等一系列问题。分享“同城58个高性能移动推送平台架构演进”的主题。移动环境中的弱网络问题和App消息的不可访问性使得PUSH成为硬性要求。但iOS的平台特殊性不允许Service常驻后台,统一下发APSN(Apple Push Notification Service),而Android平台解决方案有开源、自主研发、第三方推送和其他特点,综合考虑,58同城基于第三方推送平台和高性能提供商自主研发,开发了移动推送解决方案。
图:58赶集集团系统架构师兼技术总监孙轩
经过单平台和多平台的演进,移动推送第三阶段的架构和协议应该如何设计和优化?孙轩以58同城的移动PUSH系统架构为例进行了深入讲解,包括分层架构系统、推送入口/传输、Android/iOS Provider等。
图:58 移动推送系统架构
那么,如何解决移动PUSH推送的性能问题呢?孙轩以Android Provider的低并发为例。原因是 HTTPS 线程不安全,每个 HTTPS 请求都被锁定。需要快速临时解决在线问题,然后定位分析问题找到最终解决方案,并使用libcurl HTTPS,降低锁粒度。
腾讯SNG增值产品部高级工程师、QQ会员AMS运营平台技术总监徐汉斌:QQ会员活动运营平台架构设计演进
许寒斌表示,活动运营具有上线周期短、个性化强、功能需求复杂、后端接口众多等特点。通过对不同业务活动模式的分析和抽象,大多数活动可以结合一组条件和条件。对动作进行抽象和封装,形成通用条件和动作活动组件。更重要的是,通过平台化和框架驱动开发,为通用活动组件的运行提供高可靠性、高性能和过载保护。并且具有横向可扩展性的框架支撑环境,活动组件只需要封装自己的业务逻辑,核心功能框架自动支撑,从而实现高可靠、高可用活动开发的完全自动化。
图:腾讯SNG增值产品部高级工程师、QQ会员AMS运营平台技术总监徐汉斌
但这是一个美好的愿景,实现它是最大的挑战。在此之下,AMS需要解决的问题是高效的活动开发模式、高可靠性和高可用性,以及保障活动运营业务的安全性。 AMS平台服务架构对外提供不同维度的服务入口,如TGW、手Q单点登录、内网通信等,AMS集群仍然属于同一个入口。但是,为了减少集群之间的交互,部署了一个物理隔离的集群。
更多精彩内容请关注新浪微博:@CSDN,视频直播及文字话题:2015中国软件开发者大会。