首页 > 编程知识 正文

阿里微服务架构组件,微服务架构搭建

时间:2023-05-05 23:53:41 阅读:234738 作者:3735

ABP VNext实操落地微服务架构系列(二)相关组件-Apollo

目录 ABP VNext实操落地微服务架构系列(二)相关组件-Apollo一 、Apollo配置中心的介绍、搭建及使用1.介绍2.搭建(本文以Linux-Docker为例,单环境)3.使用 二.总结

一 、Apollo配置中心的介绍、搭建及使用 1.介绍 Apollo配置中心包括三个重要组成部分,均独立部署,分别是:portal、adminservice、configservice,且portal和configservice都有自己相应独立的数据库,adminservice和configservice是同一个Portal–>提供一个UI界面供用户操作相应的配置,替代对项目中appsettings.xxx.json文件的维护AdminService–>将用户通过Portal修改或者新增的配置通知到相关订阅的服务,以达到配置更新ConfigService–>将用户通过Portal修改或者新增的配置落地到数据库中总结:总的来说就是将咱们配置文件中的静态数据通过一个UI来展示,并且可以实现动态热更新,而且程序不需要重启,非常方便使用和维护.暂时就大概这么介绍一下,后面会针对Apollo单独出一个系列的文章来细细介绍一下. 官方地址: https://github.com/ctripcorp/apollo. 2.搭建(本文以Linux-Docker为例,单环境) 当然生产咱们是不会装Docker里面的,只是为了方便,所以本文介绍Docker的部署,非容器的部署方式以后会出一个系列的文章来介绍,如果没有Docker使用经验的筒子们建议学习一下,当然我也会出Docker相关的系列文章.部署 //数据库准备1.Portal : https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloportaldb.sql2.ConfigService: https://github.com/ctripcorp/apollo/blob/master/scripts/sql/apolloconfigdb.sql// 拉取镜像docker pull apolloconfig/apollo-potal:1.7.0 //Portaldocker pull apolloconfig/apollo-adminservice:1.7.0 //AdminServicedocker pull apolloconfig/apollo-configservice:1.7.0 //ConfigService//运行容器//portaldocker run -d --name apollo_portal //容器名称-p 8070:8070 //映射端口-e SPRING_DATASOURCE_URL="jdbc:mysql://xxxx:3306/ApolloPortalDB?hcdmt=utf8" //数据库连接-e SPRING_DATASOURCE_USERNAME=root //数据库登录名-e SPRING_DATASOURCE_PASSWORD=123456 //数据库密码-v /usr/local/docker/apollo/prod/portal/logs:/opt/logs //挂载日志apolloconfig/apollo-portal:1.7.0 //镜像//config-servicedocker run -d --name apollo_config -p 8080:8080 -e SPRING_DATASOURCE_URL="jdbc:mysql://xxxxx:3306/ApolloConfigDB?hcdmt=utf8" -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456-e eureka_instance_ip-address=xxxx //这个是注册中心的ip 取当前ip即可,除非独立部署了注册中心 -v /usr/local/docker/apollo/prod/configservice/logs:/opt/logs apolloconfig/apollo-configservice:1.7.0//admin-servicedocker run -d --name apollo_admin -p 8090:8090 -e SPRING_DATASOURCE_URL="jdbc:mysql://xxxx:3306/ApolloConfigDB?hcdmt=utf8" -e SPRING_DATASOURCE_USERNAME=root -e SPRING_DATASOURCE_PASSWORD=123456-e eureka_instance_ip-address= xxxx-v /usr/local/docker/apollo/prod/adminservice/logs:/opt/logs apolloconfig/apollo-adminservice:1.7.0

部署成功之后即可通过 http://potal-容器宿主机ip:8070 来访问UI了. 默认账号密码是
账号: apollo
密码: admin

然后就可以愉快的使用Apollo了.

3.使用 点击创建项目
列表里面找到刚刚创建的项目,开始添加第一个配置





至此,你已经添加了一个项目并且创建了第一个配置

创建一个空的Webapi项目,并且Nuget引用apollo客户端包

在配置文件中加入apollo的相关配置,AppId是上面创建的Appid,是一个项目的唯一标识,MetaServer和ConfigServer填的是ConfigService的地址,数组是因为注册中心的集群.

Program文件中加入一下代码:

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args) .ConfigureAppConfiguration((hostingContext, builder) => { builder.AddApollo(builder.Build().GetSection("Apollo")) //配置apollo .AddDefault();//添加默认的 application命名空间 }) .ConfigureWebHostDefaults(webBuilder => { webBuilder.UseStartup<Startup>(); }); 让咱们可以在Startup文件中开始验证Apollo的配置是否生效了.

并且在Apollo-Portal你会发现已经有一个实例连接,其实就是你本身.

因为作者为了方便,是在Configure方法做的打印,大家可以完整的创建一个Api,然后在控制器中**注入IConfiguration对象**,在程序运行的状态下对Apollo的值进行修改发布,你会发先配置会自动的热更新.

二.总结 Apollo在我们微服务架构中是一个不可缺少的组件,当服务数量众多,配置也是一个非常庞大的数量.而Apollo不仅帮我们简化了配置的维护,还能实现集群多环境部署,比如测试环境,仿真环境,生产环境还支持配置共享、回滚发布、灰度等非常优秀的功能它的功能远不止如此,还需要大家自己亲手操作使用才会有相应的经验.并不是一篇两篇博客就能弄明白的.本文对Apollo的介绍也不是非常的详细,后续会出独立的Apollo系列的文章**如果有不对的地方欢迎指正**

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。