iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >ASP.NET Core集成Apollo的方法
  • 501
分享到

ASP.NET Core集成Apollo的方法

2023-06-29 22:06:51 501人浏览 薄情痞子
摘要

今天小编给大家分享一下asp.net Core集成Apollo的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

今天小编给大家分享一下asp.net Core集成Apollo的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    1.介绍

    Apollo(阿波罗)是携程框架部研发并开源的一款生产级的配置中心产品,它能够集中管理应用在不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

    2.架构和模块

    下面是Apollo架构模块图:

    ASP.NET Core集成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用户在配置发布后的实时推送设计

    在配置中心中,一个重要的功能就是配置发布后实时推送到客户端。下面我们简要看一下这块是怎么设计实现的:

    • 用户在Portal操作配置发布。

    • Portal调用Admin Service的接口操作发布。

    • Admin Service发布配置后,发送ReleaseMessage给各个Config Service。

    • Config Service收到ReleaseMessage后,通知对应的客户端。

    2.2Apollo客户端的实现原理

    • 客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送(通过Http Long Polling实现)。

    • 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。

      • 这是一个fallback机制,为了防止推送机制失效导致配置不更新。

      • 客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作,服务端都会返回304 - Not Modified。

      • 定时频率默认为每5分钟拉取一次,客户端也可以通过在运行时指定System Property: apollo.refreshInterval来覆盖,单位为分钟。

    • 客户端从Apollo配置中心服务端获取到应用的最新配置后,会保存在内存中。

    • 客户端会把从服务端获取到的配置在本地文件系统缓存一份。

      • 在遇到服务不可用,或网络不通的时候,依然能从本地恢复配置,不影响应用正常运行。本地缓存路径位于C:\opt\data\{appId}\config-cache,所以请确保C:\opt\data\目录存在,且应用有读写权限。

    • 应用程序可以从Apollo客户端获取最新的配置、订阅配置更新通知。

    2.3环境配置(Environment)

    Apollo支持应用在不同的环境有不同的配置,所以Environment是另一个从服务器获取配置的重要信息。Environment通过配置文件来指定,文件位置为C:\opt\settings\server.properties,文件内容形如:

    env=DEV

    目前,env支持以下几个值(大小写不敏感):

    • DEV:Development environment

    • FAT:Feature Acceptance Test environment

    • UAT:User Acceptance Test environment

    • PRO:Production environment

    3.Apollo在windows上快速启动

    3.1准备工作

    3.1.1 Java jdk

    Apollo服务端:1.8+

    Apollo客户端:1.7+

    Java jdk1.8下载地址:https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html,这里提醒一下,安装目录名称千万别有空格,不然会Apollo启动时候会报错的。

    在配置好后,可以通过如下命令检查:

    java -version

    ASP.NET Core集成Apollo的方法

    配置下环境变量:

    ASP.NET Core集成Apollo的方法

    3.1.2MySQL

    版本要求:5.6.5+(Mysql服务端安装我就不说了,自行百度)

    Apollo的表结构对timestamp使用了多个default声明,所以需要5.6.5以上版本。

    连接上mysql后,可以通过如下命令检查:

    SHOW VARIABLES WHERE Variable_name = 'version';

    ASP.NET Core集成Apollo的方法

    3.1.3下载快速启动安装包

    下载Apollo安装包,大家只需要下载到本地,就可以直接使用,免去了编译、打包过程。

    GitHub下载:https://github.com/nobodyiam/apollo-build-scripts

    安装包要58M这么大,是因为这是一个可以自启动的jar包,里面包含了所有依赖jar包以及一个内置的Tomcat容器。解压Apollo安装包后会看到如下文件:

    ASP.NET Core集成Apollo的方法

    3.2安装步骤

    3.2.1创建数据库

    Apollo服务端共需要两个数据库:ApolloPortalDB和ApolloConfigDB,我们把数据库、表的创建和样例数据都分别准备了sql文件,只需要导入数据库即可。

    创建ApolloPortalDB:通过各种MySQL客户端导入sql/apolloportaldb.sql即可。

    下面以MySQL原生客户端为例:

    source /your_local_path/sql/apolloportaldb.sql

    创建ApolloConfigDB:通过各种MySQL客户端导入sql/apolloconfigdb.sql即可。

    下面以MySQL原生客户端为例:

    source /your_local_path/sql/apolloconfigdb.sql
    3.2.2配置数据库连接信息

    Apollo服务端需要知道如何连接到你前面创建的数据库,所以需要编辑Apollo目录中的demo.sh,修改ApolloPortalDB和ApolloConfigDB相关的数据库连接串信息:

    # apollo config db infoapollo_config_db_url=jdbc:mysql://172.168.16.xxx:5621/ApolloConfigDB?characterEncoding=utf8apollo_config_db_username=用户名apollo_config_db_passWord=密码# apollo portal db infoapollo_portal_db_url=jdbc:mysql://172.168.16.xxx:5621/ApolloPortalDB?characterEncoding=utf8apollo_portal_db_username=用户名apollo_portal_db_password=密码

    3.3启动Apollo配置中心

    快速启动脚本会在本地启动3个服务,分别使用8070, 8080, 8090端口,请确保这3个端口当前没有被使用。

    • linux/Mac下,可以通过如下命令检查:

    lsof -i:8080
    • ●在Window下,可以通过如下命令检查:

    netstat -aon|findstr 8080

    先切换到Apollo目录:

    cd D:\StudyDocuments\technology\Apollo\apollo-build-scripts-master

    然后执行启动脚本:

    ./demo.sh start

    ASP.NET Core集成Apollo的方法

    因为我是在本机部署Apollo服务端的,所以直接打开http://localhost:8070即可:

    ASP.NET Core集成Apollo的方法

    默认管理员用户名:apollo,密码:admin,输入即可登录成功!而Eureka默认端口是8080,即打开http://localhost:8080/即可:

    ASP.NET Core集成Apollo的方法

    阿波罗如何创建修改用户密码、创建用户、部门,分配权限等等操作,我就不说了,大伙可以自行百度或者去官网了解,这不在本文范畴之内。

    4.ASP.net core集成Apollo快速开发

    4.1Apollo环境配置

    Apollo默认有两个组织部门,可以通过登录后管理员工具-系统参数,输入key值organizations添加修改。返回主界面点击创建项目后,根据自身项目输入相关项目信息,我这边demo项目信息如下:

    ASP.NET Core集成Apollo的方法

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

    ASP.NET Core集成Apollo的方法

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

    ASP.NET Core集成Apollo的方法

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

    ASP.NET Core集成Apollo的方法

    ASP.NET Core集成Apollo的方法

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

    ASP.NET Core集成Apollo的方法

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

    ASP.NET Core集成Apollo的方法

    然后点击发布即可。

    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应用,会看到如下调试信息:

    ASP.NET Core集成Apollo的方法

    ASP.NET Core集成Apollo的方法

    以上就是“ASP.NET Core集成Apollo的方法”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: ASP.NET Core集成Apollo的方法

    本文链接: https://www.lsjlt.com/news/326663.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • ASP.NET Core集成Apollo的方法
      今天小编给大家分享一下ASP.NET Core集成Apollo的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。...
      99+
      2023-06-29
    • ASP.NET Core集成Apollo(阿波罗)
      目录1.介绍2.架构和模块2.1用户在配置发布后的实时推送设计2.2Apollo客户端的实现原理2.3环境配置(Environment)3.Apollo在Windows上快速启动3....
      99+
      2024-04-02
    • asp.net core 集成swagger ui的原理解析
      什么是Swagger? 说swagger 之前,我们先说一下OpenApi 规范。 OpenApi 是一种和语言无关的用于描述RESTAPIs 接口功能的一种规范,对REST...
      99+
      2024-04-02
    • ASP.NET Core 集成 React SPA应用的步骤
      目录wwwroot\uiReactUIMiddleware运行一下总结AgileConfig的UI使用react重写快完成了。上次搞定了基于jwt的登录模式(AntDesign Pr...
      99+
      2024-04-02
    • 如何在Asp.Net Core中集成ABP Dapper
      目录  一 安装包依赖  二 添加DependsOn属性标签  三 Entity to Table Mapping  四 应用  在实际的项目中,除了集成ABP框架的EntityFr...
      99+
      2024-04-02
    • 集成apollo动态日志取缔logback-spring.xml配置的方法
      这篇文章主要介绍“集成apollo动态日志取缔logback-spring.xml配置的方法”,在日常操作中,相信很多人在集成apollo动态日志取缔logback-spring.xml配置的方法问题上存在疑惑,小编查阅了各式资料,整理出简...
      99+
      2023-06-29
    • ASP.NET Core设置URLs的五种方法
      目录前言URL格式前提条件方法1 使用环境变量方法2 使用命令行参数方法3 使用配置文件方法4 使用UseUrls方法5 使用Kestrel优先级总结前言 在使用ASP.NET Co...
      99+
      2024-04-02
    • ASP.NET Core读取Request.Body的正确方法
      目录前言常用读取方式同步读取异步读取重复读取源码探究StreamReader和Stream的关系HttpRequest的BodyAllowSynchronousIO本质来源Enabl...
      99+
      2024-04-02
    • ASP.NET Core托管模型CreateDefaultBuilder()方法
      让我们讨论一下 CreateDefaultBuilder() 方法究竟对配置和设置 Web 服务器的作用。从托管的角度来看,一个ASP.NET Web 应用程序可以通过两种方式托管,...
      99+
      2024-04-02
    • ASP.NET Core项目中调用WebService的方法
      一、前言 现实生产中,有一些比较老的系统对外提供的接口都是WebService形式的,如果是使用.NET Framework创建的项目调用WebService非常方便,网上有很多代码...
      99+
      2024-04-02
    • ASP.NET Core自动生成小写破折号路由的实现方法
      目录1、如何生成小写的路由可以这样设置2、生成带破折号并且小写的路由可以这样设置3、解决方案3.1对于Asp.NetCore2.2MVC:3.2  对于Asp.N...
      99+
      2024-04-02
    • 实现ASP.NET Core自动生成小写破折号路由的方法
      这篇文章主要讲解了“实现ASP.NET Core自动生成小写破折号路由的方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“实现ASP.NET Core自动生成小写破折号路由的方法”吧!默认情...
      99+
      2023-06-14
    • ASP.NET Core基础之Main方法讲解
      为什么ASP.NET Core采用Main方法? 需要记住的最重要的一点是,ASP.NET Core Web 应用程序最初作为控制台应用程序启动,Main() 方法是应用程序的入口点...
      99+
      2024-04-02
    • ASP.NET Core使用EF创建模型的方法
      这篇文章主要介绍“ASP.NET Core使用EF创建模型的方法”,在日常操作中,相信很多人在ASP.NET Core使用EF创建模型的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”A...
      99+
      2023-06-29
    • .Net Core 集成 Kafka的步骤
      目录kafkabrokertopicpartitionconsumer group安装kafka.net 操作 kafka生产者消费者运行一下总结最近维护的一个系统并发有点高,所以想...
      99+
      2024-04-02
    • ASP.NET Core中间件初始化的实现方法
      小编给大家分享一下ASP.NET Core中间件初始化的实现方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!前言  在日常使用ASP.NET Core开发的过程中我们多多少少会设计到使用中间件的场景,...
      99+
      2023-06-15
    • ASP.NET Core MVC路由(Routing)的用法
      目录1.设置路由中间件2.常规路由3.多路由1.回退2.行动歧义3.路由名称4.路由特性5.组合路由6.特性路由的顺序7.路由模板中的标记替换( [controller] , [ac...
      99+
      2024-04-02
    • 三种方法解决ASP.NET Core 6中的依赖项
      依赖性注入是一种技术,它允许我们注入一个特定类的依赖对象,而不是直接创建这些实例。 使用依赖注入的好处显而易见,它通过放松模块间的耦合,来增强系统的可维护性和可测试性。 依赖注入允许...
      99+
      2024-04-02
    • ASP.NET Core中Razor页面的Handlers处理方法详解
      简介 在前一篇文章中,我们讨论了Razor页面。今天我们来谈谈处理方法(Handlers)。 我们知道可以将代码和模型放在 .cshtml 文件里面或与 ...
      99+
      2024-04-02
    • ASP.NET Core WebApi返回结果统一包装的方法
      这篇“ASP.NET Core WebApi返回结果统一包装的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看...
      99+
      2023-06-30
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作