目录
1.介绍2.架构和模块2.1用户在配置发布后的实时推送设计2.2Apollo客户端的实现原理2.3环境配置(Environment)3.Apollo在Windows上快速启动3.1准备工作3.1.1 java jdk3.1.2mysql3.1.3下载快速启动安装包3.2安装步骤3.2.1创建数据库3.2.2配置数据库连接信息3.3启动Apollo配置中心4.ASP.NET Core集成Apollo快速开发4.1Apollo环境配置4.2ASP.NET Core集成Apollo1.介绍
Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
2.架构和模块
下面是Apollo架构模块图(来源自于波波微课):

上图简要描述了Apollo的总体设计,我们可以从下往上看:
Config Service提供配置的读取、推送等功能,服务对象是Apollo客户端。Admin Service提供配置的修改、发布等功能,服务对象是Apollo Portal(管理界面)。Config Service和Admin Service都是多实例、无状态部署,所以需要将自己注册到Eureka中并保持心跳。在Eureka之上我们架了一层Meta Server用于封装Eureka的服务发现接口。Client通过域名访问Meta Server获取Config Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Client侧会做load balance、错误重试。Portal通过域名访问Meta Server获取Admin Service服务列表(IP+Port),而后直接通过IP+Port访问服务,同时在Portal侧会做load balance、错误重试。为了简化部署,我们实际上会把Config Service、Eureka和Meta Server三个逻辑角色部署在同一个JVM进程中。2.1用户在配置发布后的实时推送设计
在配置中心中,一个重要的功能就是配置发布后实时推送到客户端。下面我们简要看一下这块是怎么设计实现的a默认端口是8080,即打开http://localhost:8080/即可:

阿波罗如何创建修改用户密码、创建用户、部门,分配权限等等操作,我就不说了,大伙可以自行百度或者去官网了解,这不在本文范畴之内。
4.ASP.NET Core集成Apollo快速开发
4.1Apollo环境配置
Apollo默认有两个组织部门,可以通过登录后管理员工具-系统参数,输入key值organizations添加修改。返回主界面点击创建项目后,根据自身项目输入相关项目信息,我这边demo项目信息如下:

创建项目后,点击进去可能会报如下错误提示:

这种错误一般是数据库Eureka服务配置参数不正确导致的!因为我是本地部署Apollo服务端的,IIS已经存在一个站点占用了Eureka服务默认端口8080,所以停掉站点后,输入demo.sh stop-demo.sh start重新启动下Apollo即可。重新启动Apollo后可能还会提示如下信息:

因为项目缺少环境namespaces配置,点击左侧“添加Namespace”选项添加一个dev开发环境namespaces:


namespaces创建后新增AspNetCore.Apollo.Test.WebApi项目开发环境配置:

上述配置相当于Core项目appsettings.json中以下配置:

然后点击发布即可。
4.2ASP.NET Core集成Apollo
通过Github上https://github.com/ctripcorp/apollo.net源码可以了解到,示例AspNetCore.Apollo.Test.WebApi应用可以通过appsettings.json文件可以添加Apollo环境配置信息:
{ "apollo": { "AppId": "AspNetCore.Apollo.Test.WebApi", //"Cluster": "test",////没有集群,暂时隐藏 "MetaServer": "http://localhost:8080/", //"Secret": "ffd9d01130ee4329875ac3441c0bedda",////没有ids4接入,暂时隐藏 //"Namespaces": [ "application.xml", "application.json", "application.yml", "application.yaml", "application" ],////没有Namespace数组,暂时隐藏 "Namespace": "dev", "Env": "Dev", "Meta": { "DEV": "http://localhost:8080/" //"FAT": "http://106.54.227.205:8080/", //"UAT": "http://106.54.227.205:8080/", //"PRO": "http://106.54.227.205:8080/" ////示例暂时只有开发环境 } }}然后在Program主程序入口引用Com.Ctrip.Framework.Apollo.Configuration Nuget包,添加Apollo环境配置信息,添加Namespace名称,具体配置代码如下:
.ConfigureAppConfiguration(builder =>{ var iConfigurationRoot = builder.Build(); var apolloInfo = iConfigurationRoot.GetSection("apollo"); var namespaceName = iConfigurationRoot.GetSection("apollo").GetSection("Namespace").Value; builder.AddApollo(apolloInfo).AddNamespace(namespaceName);})然后运行示例AspNetCore.Apollo.Test.WebApi应用,会看到如下调试信息:


从上述调试信息可以看到Apollo在ASP.NET Core集成成功!
到此这篇关于ASP.NET Core集成Apollo的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。








