京东咚咚微服务架构从理论认识到实践落地_29页_1mb
报告摘要
京东咚咚微服务架构总结
核心内容
京东咚咚在微服务架构的演进过程中,从传统的单体应用逐步转向了以业务能力为中心的平台架构,实现了系统的高可扩展性、高可用性和高运维效率。整个架构演进过程中,强调了从理论认识到实践落地的关键转变。
主要观点
- 微服务定义:微服务是一种通过一组小服务构建应用的方式,每个服务独立运行并可通过轻量级机制进行通信。
- 微服务起源:微服务理念源于UNIX哲学,强调“小即是美”、“一个程序只做好一件事”,并认为微服务是SOA的一种具体实现方式,与XP或Scrum类似。
- 微服务特征:通过服务拆分,实现按业务能力组织,支持独立部署与扩展,从而提升系统的灵活性和可维护性。
- 微服务实施前提:微服务适合中等复杂度以上的系统,对于简单系统可能适得其反。一般认为,2000行以上代码才适合微服务化。
- 架构原则:包括契约化开发、自动化文化、反脆弱性等,强调服务间的解耦与独立运行。
关键信息
服务拆分
- 单体应用将所有功能集中在一个进程中,扩展时需复制整个应用。
- 微服务将每个功能模块独立为一个服务,通过分布式部署实现灵活扩展。
- 拆分后,咚咚系统实现了从单体到微服务的转变,支持50+微服务和2000+Docker容器。
服务协作
- 采用全栈团队模式,按业务能力组织服务,符合康威定律。
- 推行契约式开发协作,强调API、能力、版本和消费方的视角。
服务部署
- 微服务支持一主机多服务和一主机一服务的部署方式,提高了资源利用率。
- 强调独立部署,每套部署含双机房主备和灰度环境,但通过优化减少了资源浪费。
服务运维
- 采用服务隔离策略,包括进程隔离、线程隔离和依赖隔离。
- 利用AOP技术实现RPC和业务代码之间的隔离,保障业务代码的纯净性。
- 实现服务发现与监控,通过订阅机制和埋点约定提升运维效率。
服务监控
- 从系统视角出发,进行统一的监控和告警处理。
- 强调日志收集和错误报警,提高系统可观测性。
微服务架构演进的疑问与思考
- 基础设施建设:不能只关注微服务的实施,还需重视基础设施的建设,如网络、服务发现、监控等。
- 复杂度管理:微服务架构的复杂性需要合理管理,避免过度拆分导致维护成本上升。
- 自动化与标准化:自动化部署、测试和监控是微服务落地的重要保障,同时需标准化接口、输出和配置。
实施原则与战略目标
架构原则
- 契约化开发:强调契约变更通知,考虑消费方的需求。
- 自动化文化:包括代码模板生成、编译、测试、部署、日志收集与告警处理。
- 反脆弱性:通过错误隔离、超时管理、断路器、隔离仓等机制,提升系统容错能力。
战略目标
- 业务扩张:通过加机器不加人的方式支持业务增长。
- 业务开拓:实现快速响应和低边际成本,支持自服务模式。
- 业务创新:降低试错成本,促进创新。
设计与交付实践
- 标准化接口:采用Dubbo RPC(内部)、JSF RPC(外部)、REST(跨语言)等标准化技术。
- 标准化输出:统一日志错误和报警提示格式,便于集中处理。
- 标准化配置:包括配置文件、启动脚本和环境参数,提升部署一致性。
- 标准化监控:通过AOP埋点实现统一监控,提高系统可观测性。
总结
京东咚咚通过微服务架构的演进,实现了从单体应用到平台化架构的转变,提升了系统的可扩展性、可维护性和运维效率。在实施过程中,注重服务拆分、协作、部署与监控,同时强调自动化和标准化,以支持业务的快速扩张与创新。
展开完整摘要
试读结束,高清完整版pdf/doc/ppt,请点下载