BFE Ingress URL重写功能实习总结 #85
mengtao97
started this conversation in
Show and tell
Replies: 2 comments
|
开源项目对一个在校生来说挑战是多方面的:编程语言的开发技能、相关领域的背景知识、涉及的库和组件、对已有代码的理解、对需求的理解分析和设计,以及开发环境的搭建和工具的使用等等,这些都是开发工作的前提,而仅仅通过学校的学习经历很难在这些方面获得足够的知识和经验。说实话开始的时候我有点担心。 但是很快我发现这种担心是多余的。孟涛同学 (@mengtao97 ) 在一开始就表现出了快速学习的能力,他在短时间内就准备好了开发测试的环境,通读了已有代码,并且对已有框架的运行机制以及内部的数据结构都有较深入的理解。他对项目工作的热情和投入度给我留下了很深的印象。 在方案设计和开发阶段,孟涛同学也表现出了认真负责和追求完美的态度。在方案讨论过程中,他能够从易用性以及未来扩展的角度去考虑来完善设计方案。 感谢孟涛同学在本次项目中所做出的扎实工作。 事实证明,实习生的工作可以为开源项目做出有力的帮助。希望有更多的同学能参与到我们的项目中来。 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
BFE Ingress URL重写功能实习总结
作为一个开源新人,很荣幸能有机会参与到百度BFE Ingress 开源项目的URL重定向功能开发中。在这段过程中,BFE团队重视软件工程的态度、严谨的代码编写规范与自动化单元测试与集成测试的实践,让我学到了很多受用的知识,收获颇丰。
在项目开始前,收到了章淼老师(@mileszhang2016)寄来的两本书,分别是《万亿级流量转发:BFE核心技术与实现》与《代码的艺术》。对这两本书的学习后,我对BFE项目有了完整的认识,对开展下一步工作有了初步的规划。同时在学习BFE项目代码时,清晰的模块结构和简洁的编码风格极大地降低了学习难度,也便于后续开发时的查漏补全。
项目准备阶段,在李楠同学(@loheagn )帮助下,完成了BFE Ingress项目的整体背景了解与本地测试环境配置,为后续的开发提供了很大的便利。每周与徐雷鸣老师(@xuleiming)的学习与讨论中,加深了对BFE Ingress Controller 项目的认识,明确任务,并完成任务的需求分析与功能设计。
在项目开发中,基于李楠同学设计并实现的通用模块基础,后续的开发较为顺利。但是仍然遇到了一些URL重写的问题,如重写时机的兼容。在URL重写中,有以下几个可由租户配置的URL重写时机:
目前的BFE引擎中,仅支持确认目标服务后进行URL重写,需考虑后续引擎升级兼容不同的重写时机。在设计中,最后选择使用hook列表来配置不同hook点的URL重写动作,每一条重写动作对应一个hook点。
其次,由于对Path和Query的修改中,若存在多个重写动作,且动作执行顺序不同可能会产生不一样的结果。由于Ingress中的annotations是map结构,在转换时,不能保证顺序的一致性。所以在设计与开发中,引入重写动作顺序属性,来保证同一hook下的动作执行顺序是有保证的。
在完成了项目的开发后,在徐雷鸣老师和林明老师(@zhugelianglongming)的code review建议下,对代码进行了修改与重构,并通过了单元测试与集成测试。同时这些测试工具的使用让我学习了不少自动化测试的知识,也进一步认识到了测试在代码质量控制中的重要性。
最后,感谢两位老师与李楠同学的帮助与指导,帮助我顺利完成这次项目开发,受益匪浅。希望后续有机会能够继续参与到BFE社区的工作中。
All reactions