BFE Ingress URL重写功能实习总结 #85
mengtao97
started this conversation in
Show and tell
Replies: 2 comments
-
感谢 @mengtao97 同学给 BFE 开源社区做出的贡献,给你的实习点赞~ |
Beta Was this translation helpful? Give feedback.
0 replies
-
开源项目对一个在校生来说挑战是多方面的:编程语言的开发技能、相关领域的背景知识、涉及的库和组件、对已有代码的理解、对需求的理解分析和设计,以及开发环境的搭建和工具的使用等等,这些都是开发工作的前提,而仅仅通过学校的学习经历很难在这些方面获得足够的知识和经验。说实话开始的时候我有点担心。 但是很快我发现这种担心是多余的。孟涛同学 (@mengtao97 ) 在一开始就表现出了快速学习的能力,他在短时间内就准备好了开发测试的环境,通读了已有代码,并且对已有框架的运行机制以及内部的数据结构都有较深入的理解。他对项目工作的热情和投入度给我留下了很深的印象。 在方案设计和开发阶段,孟涛同学也表现出了认真负责和追求完美的态度。在方案讨论过程中,他能够从易用性以及未来扩展的角度去考虑来完善设计方案。 感谢孟涛同学在本次项目中所做出的扎实工作。 事实证明,实习生的工作可以为开源项目做出有力的帮助。希望有更多的同学能参与到我们的项目中来。 |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
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社区的工作中。
Beta Was this translation helpful? Give feedback.
All reactions