hyperf | 萌推 PHP 微服务化改造

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
云原生网关 MSE Higress,422元/月
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 刚进萌推时输出的一份文档, 现在回头看来, 有不少地方值得推敲. 先放到 blog 上, 权且抛砖引玉吧.

刚进萌推时输出的一份文档, 现在回头看来, 有不少地方值得推敲. 先放到 blog 上, 权且抛砖引玉吧.

微服务基础 & 选型

服务化架构演进

微服务现状, 以 spring 为例, 怎么把单体服务 -> 微服务

microservice - spring cloud

PHP 微服务现状: 包含 hyperf 框架实现的支持
hyperf doc: 包含框架组件 + 脚手架

开发组支持, 全部都是线上在使用, 统计截止时间 2019.05:

  • 李/武: KnowYourself - 在线教育
  • 黄/张: KK - 新零售
  • dayday: 萌推

迁移计划

  • 评审, 可行性分析, 现有业务贴合度
  • 技术培训:

    • 微服务化概念
    • swoole服务器开发入门(全协程)

      • 根据 swoole wiki 整理: swoole| swoole wiki 笔记
      • NP(network programming)基础
      • swoole 协程
      • swoole 核心模块/各功能组件一览
    • hyperf框架基础:

      • hyperf-component: 框架核心, 由开发组维护, 欢迎一起参与
      • hyperf-skeleton: 开发组提供的全量 demo, 需要的功能都可以在这里找到代码实例
      • doc 已经可以满足常规开发使用
      • 框架核心/特性/快速入门
  • 基础设施搭建与现有基础服务接入

    • hyperf 组件+脚手架+开发环境/测试环境(建议docker, mac 下搭建很快)
    • 日志
    • 监控
    • cache
    • redis
    • mysql
    • 异步队列
    • mq: rabbitmq kafka
    • consul
    • grpc
    • zipkin
    • ...
  • 业务服务接入, 基础服务可以配合服务的接入过程一步步来

    • 选取非核心service, 加入 A/B test 验证
    • 切换到核心服务

改造过程相关问题

  • 推进: 暂时将微服务改造放到第二优先级, 业务按照 紧急/重要 2个维度来评估是否插入
  • 工程衡量指标

    • 开发效率: 容易卡住的点, 是否需要提供技术培训; 任务时间的评估, 留好buffer
    • 错误率, 错误响应时间(解决问题的效率): 前期 日志/监控/报警 等基础服务, 人员的熟悉
  • 人员分配: 待评估

    • 运维部署, 测试环境/pre/prod, 各环境下的依赖
    • 具体开发人员角色切换
  • 改造过程中的业务痛点问题攻关

    • 熟悉业务, 才能技术上有的放矢
    • 提炼出工作流: 问题 负责人 涉及业务模块 监控日志 处理时效 总结

more

  • 关于工作流的一个例子: db小分队解决慢查 -> 邮件慢查给技术经理 -> 成立小分队(数据分析团队兼任) -> 看慢查, 提建议给业务开发 -> 自己处理, 不确定再和业务开发对
  • 关于2种技术管理风格: 传统 vs film, 传统 -> 技术经理越来越强; film -> 能力越大, 责任越大
  • 关于新人培训: 来源于以前CTO的经验, 结合我几次经历重构的经验, 场景其实出奇的一致(新入职的新, 和重构需要面临的新), 要给「新人超出现有能力的任务」
目录
相关文章
|
4月前
|
Cloud Native PHP Docker
PHP 中的异常处理:提升代码的健壮性云原生时代的微服务架构实践
【7月更文挑战第31天】在PHP开发中,异常处理是确保应用程序稳定性和可靠性的关键。本文将引导您了解如何在PHP中实现有效的异常处理机制,通过实际代码示例展示如何捕获和处理异常,以及如何使用自定义异常类来增强错误管理的灵活性。我们将探索不同的异常处理策略,并讨论它们对提升代码质量的影响。 【7月更文挑战第31天】在数字化浪潮的推动下,云原生技术正成为企业转型的关键。本文将深入探讨如何在云平台上利用微服务架构实现敏捷开发和高效运维,通过具体的代码示例,揭示微服务与容器化部署的协同优势,同时指出在实施过程中可能遇到的挑战及应对策略。
31 1
|
5月前
|
监控 PHP Docker
PHP框架如何应对微服务与容器化趋势
这篇文档讨论了PHP框架如何适应微服务和容器化趋势。主要内容包括:1) 微服务支持,如服务拆分与通信、服务发现与注册、数据持久化与缓存及安全与认证;2) 容器化支持,涉及轻量级与可移植性、自动化构建与部署、环境变量配置及日志与监控。文中通过代码示例展示了如何使用Laravel框架构建微服务和Docker容器化部署。最后,提到了扩展性和容错性在微服务架构中的重要性,并指出实践中还需考虑版本控制、灰度发布等高级功能。
90 0
|
6月前
|
Kubernetes Cloud Native PHP
构建高效云原生应用:基于Kubernetes的微服务治理实践深入理解PHP中的命名空间
【5月更文挑战第28天】 在当今数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为了企业IT架构的重要选择。本文深入探讨了如何在云平台之上,利用Kubernetes这一容器编排工具,实现微服务架构的有效治理。通过分析微服务设计原则与Kubernetes特性的融合,提出了一套系统的微服务部署、监控和管理策略。文章不仅阐述了关键技术点,还提供了具体实施步骤和最佳实践,以期帮助企业构建出既高效又稳定的云原生应用。 【5月更文挑战第28天】在PHP的编程世界中,命名空间是管理代码和避免名称冲突的强大工具。本文将探讨PHP命名空间的核心概念、实现方式及其在现代PHP开发中的应用。通过深
|
6月前
|
消息中间件 PHP 数据库
【PHP开发专栏】PHP在微服务架构中的应用
【4月更文挑战第29天】微服务架构将大型应用拆分成独立小服务,PHP在其中可作为API网关、微服务提供者,参与服务发现、消息队列处理和事件驱动。最佳实践包括选择合适PHP框架、使用容器化技术、定义服务契约、采用分布式缓存、实现服务发现、监控和日志收集、优化数据库设计以及注重安全性。遵循这些实践,PHP开发者能构建高效、可扩展的微服务应用。
111 0
|
JSON 网络协议 PHP
PHP写微服务之Hyperf
PHP写微服务之Hyperf
434 0
PHP写微服务之Hyperf
|
Linux PHP Docker
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
847 0
Windows下PHP微服务框架Hyperf Swoole开发部署(Docker方式)
|
PHP 开发者 微服务
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛
255 0
阿里云栖开发者沙龙PHP技术专场-直面PHP微服务架构挑战-高驰涛
|
存储 消息中间件 NoSQL
PHP 基于 SW-X 框架,搭建RPC微服务支持
SW-X的微服务也可用于优化FPM业务,底层使用了TCP通讯协议,支持基于AES的数据加解密支持,官方提供了Swoole/FPM下的RPC客户端,并提供了纯基于Redis存储管理的RPC服务中心。
|
运维 API PHP
php| php 微服务之旅: 配置中心
这篇我们来撸配置中心. 为啥要用配置中心呢? 我用个讨巧的方式来回答这个问题:
599 0
|
消息中间件 大数据 PHP
PHP技术月刊第2期:直面PHP微服务架构挑战
云栖社区“世界上最好的编程语言”——PHP开始发布技术月刊啦。PHP技术月刊将会为大家介绍最新的PHP技术与动态、预告活动、最热问答以及技术直播等,欢迎大家订阅。
2564 0