【开源之夏】Apollo 社区学生火热招募中!
01
活动简介
『开源之夏』(全称:开源软件供应链点亮计划——暑期 2021 )是一项专门面向高校学生的开源项目开发活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源社区的蓬勃发展。
『开源之夏』由中国科学院软件研究所与 OpenEuler 社区主办,中科院软件研究所南京软件技术研究院承办,开源社、SegmentFault 思否协办,联合各大开源社区,针对重要开源软件的开发与维护提供项目,并向全球高校学生开放报名。目前共有 109 家海内外开源技术社区、877 个开源项目通过了活动审核并上线官网。
这个活动主要是利用在校生的暑假时间,让学生们参与到开源项目的建设,一方面能提高个人技术能力、了解开源、结实开源圈的大牛,另一方面对于成功入选并完成社区项目考核的同学,还有最高 1.2 万元人民币的现金奖励。
02
关于 Apollo
Apollo 是一款可靠、易用的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
自开源以来,Apollo 以其功能丰富、简单易用等特性,得到了社区开发者的广泛关注,在 Github 上有 24.7k star, 9k fork 和 77 contributor,也已在数百家企业中投入生产使用。
2.1 产品界面
2.2 架构模块
2.3 特点介绍
统一管理不同环境、不同集群的配置
Apollo 提供了一个统一界面集中式管理不同环境(environment)、不同集群(cluster)、不同命名空间(namespace)的配置。
同一份代码部署在不同的集群,可以有不同的配置,比如zk的地址等
通过命名空间(namespace)可以很方便的支持多个不同应用共享同一份配置,同时还允许应用对共享的配置进行覆盖
配置界面支持多语言(中文,English)
配置修改实时生效(热发布)
用户在 Apollo 修改完配置并发布后,客户端能实时(1秒)接收到最新的配置,并通知到应用程序。
版本发布管理
所有的配置发布都有版本概念,从而可以方便的支持配置的回滚。
灰度发布
支持配置的灰度发布,比如点击发布后,只对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。
权限管理、发布审核、操作审计
应用和配置的管理都有完善的权限管理机制,对配置的管理还分为了编辑和发布两个环节,从而减少人为的错误。
所有的操作都有审计日志,可以方便的追踪问题。
客户端配置信息监控
可以方便的看到配置在被哪些实例使用
提供Java和.Net原生客户端
提供了 Java 和 .Net 的原生客户端,方便应用集成
支持 Spring Placeholder,Annotation 和 Spring Boot 的 ConfigurationProperties,方便应用使用(需要 Spring 3.1.1+)
同时提供了 Http 接口,非 Java 和 .Net 应用也可以方便的使用
提供开放平台API
Apollo 自身提供了比较完善的统一配置管理界面,支持多环境、多数据中心配置管理、权限、流程治理等特性。
不过 Apollo 出于通用性考虑,对配置的修改不会做过多限制,只要符合基本的格式就能够保存。
在我们的调研中发现,对于有些使用方,它们的配置可能会有比较复杂的格式,如 xml, json,需要对格式做校验。
还有一些使用方如 DAL,不仅有特定的格式,而且对输入的值也需要进行校验后方可保存,如检查数据库、用户名和密码是否匹配。
对于这类应用,Apollo 支持应用方通过开放接口在 Apollo 进行配置的修改和发布,并且具备完善的授权和权限控制
部署简单
配置中心作为基础服务,可用性要求非常高,这就要求 Apollo 对外部依赖尽可能地少
目前唯一的外部依赖是 MySQL,所以部署非常简单,只要安装好 Java 和 MySQL 就可以让 Apollo 跑起来
Apollo 还提供了打包脚本,一键就可以生成所有需要的安装包,并且支持自定义运行时参数
03
Apollo 社区暑期 2021 项目详情
此次 Apollo 社区有幸参加『开源软件供应链点亮计划 - 暑期2021』活动,也是特意选取了一些社区呼声很高,同时也适合学生独立完成的项目,欢迎大家踊跃报名!
题目一:
Apollo 支持使用 Zookeeper 作为注册中心
项目主导师:陈凯玲(Apollo Committer)
联系邮箱:632104866@qq.com
难度:低
技术标签:Java, Cloud Native, Zookeeper
项目描述
Apollo 默认内置 Eureka 作为注册中心用来管理 apollo-configservice 和 apollo-adminservice 的服务实例列表。不过在实际使用中,有些公司为了统一管理,所以希望 apollo-configservice 和 apollo-adminservice 注册到公司内部已有的注册中心,比如 consul,nacos,zookeeper,kubernetes 等,目前 apollo 已经支持和 eureka, consul, nacos, kubernetes 等集成,所以需要增加对 zookeeper 的支持。
更多信息详见 github 讨论:
https://github.com/ctripcorp/apollo/issues/3557
题目二:
提供 Apollo 公共 Namespace 统一管理页面
项目主导师:宋顺(Apollo PMC Member)
联系邮箱:nobodyiam@outlook.com
难度:中
技术标签:Java, Cloud Native, JavaScript, Distributed System, Database, MicroService
项目描述
Apollo 的创新点之一就是公共 Namespace,通过公共 Namespace 可以非常方便地实现公司内不同应用之间共享同一份配置,同时也提供了个性化配置的能力。不过当公共 Namespace 越来越多后,不少用户反馈希望能提供一个统一的视角,从而可以方便地看到系统中所有的公共 Namespace,从而可以方便配置的治理。此项目的目标就是提供一个公共 Namespace 的列表页面,用户可以在这个页面上看到所有的公共 Namespace,点击后可以跳转到实际的项目中去查看和编辑。
更多信息详见 github 讨论:
https://github.com/ctripcorp/apollo/issues/1926
题目三:
Apollo 公共 namespace 支持 xml、json、yaml 等格式
项目主导师:张乐(Apollo Committer)
联系邮箱:lepdou@126.com
难度:中
技术标签:Java, Cloud Native, JavaScript, Distributed System, MicroService
项目描述
目前 Apollo 只支持 properties 格式的公共继承能力,但是用户实际使用过程中对于其它的格式,例如: xml、yaml、json 也有公共 namespace 的诉求,所以期望 Apollo 平台能够支持全格式的公共继承能力。
更多信息详见 github 讨论:
https://github.com/ctripcorp/apollo/issues/2602
题目四:
Apollo 扩展灰度发布能力,支持除 IP 以外的维度
项目主导师:宋顺(Apollo PMC Member)
联系邮箱:nobodyiam@outlook.com
难度:高
技术标签:Java, JavaScript, Distributed System, Database, Kubernetes, MicroService
项目描述
Apollo 的一大功能亮点是灰度发布,配置修改后,可以先对部分应用实例生效,等观察一段时间没问题后再推给所有应用实例。目前的灰度是基于 IP 的,比如可以设置对 1.1.1.1 生效新版本的配置,而其它的机器仍然使用老版本。不过在一些 IP 会动态变化的场景下(如 kubernetes),由于容器重启后往往会使用不同的 IP,灰度发布的使用场景会受到较大的限制,所以社区有很好的期望希望 Apollo 支持通过 IP 以外的维度来实现灰度发布。
更多信息详见 github 讨论:
https://github.com/ctripcorp/apollo/issues/2932
04
学生申请
面向哪些学生
本活动面向年满 18 周岁在校学生
暑期即将毕业的学生,只要在申请时学生证处在有效期内,就可以提交申请
海外学生可提供录取通知书/学生卡/在读证明证明学生身份
申请贴士
在官网系统内注册账号并完善个人资料,并阅读学生指南,相关链接如下
https://summer.iscas.ac.cn/help/student/
https://summer.iscas.ac.cn/#/org/orgdetail/apollo
在正式提交项目申请书之前,建议与社区指定的项目导师沟通,提高申请成功概率
一个学生最多可以同时申请三个项目,但最终只能承担一个项目。尽量专注于感兴趣的 1-2 家社区,以免降低中选概率
避免在最后一天提交,避免因不熟悉申请流程、缺少申请材料、网络等问题造成无法在指定时间内完成申请
05
奖金说明
奖金额度
每个项目奖金总额根据项目难度分为 12000 元(高难度)、9000 元(中等难度)和 6000 元(低难度)(注:奖金数额为税前人民币金额)
奖金发放时间
通过中期考核的学生会先收到 50% 的项目奖金,通过结项考核的学生将获得剩余 50% 的奖金。若结项评审未通过,则不予发放剩余奖金数额。
06
沟通与交流
为了方便高校同学与 Apollo 社区项目导师进行及时交流,我们特意创建了开源之夏微信沟通群,欢迎扫描下方二维码加入:
Apollo 社区期待你的参与!
活动申请入口:
https://summer.iscas.ac.cn/#/org/orgdetail/apollo
Apollo 官方网站:
https://www.apolloconfig.com/
Apollo 项目地址:
https://github.com/ctripcorp/apollo
Apollo 公共邮箱:
apollo-config@googlegroups.com