【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)

2019年02月24日,终于完成之前的项目。发现多年的工作开发节奏有点脱节了,刚好有时间多学一下,同时在这里记录一下爬坑遇到的问题。之前一直使用WEB API 做单点服务端开发,其中涉及到 ASP.NET WEB PAGE , MVC 等基础技术,这次想感受下‘ .Net Core。

首先感谢前辈,参考下面两个帖子开工

surging 微服务框架使用系列之surging

【.NET CORE】Surging 分布式微服务框架使用入门

首先确定一个小目标,因为之前项目都是WEB API和VUE , 其他也不多想了,就搞个小例子出来。

工具准备
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第1张图片

rabbitmq 消息队列处理
下载地址 http://www.rabbitmq.com/download.html

这玩意需要 erlang/otp
下载地址 http://www.erlang.org/download/otp_win64_17.3.exe

surging 是一个分布式微服务引擎,提供高性能RPC远程服务调用
git clone https://github.com/dotnetcore/surging.git

Consul 服务注册中心
下载地址:https://www.consul.io/downloads.html

.NET Core 2.2
https://dotnet.microsoft.com/download/visual-studio-sdks?utm_source=getdotnetsdk&utm_medium=referral

【1】 Rabbitmq (注意:目前为止还不在清楚这东西干嘛的T_T)

【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第2张图片
打开 http://localhost:15672/ 用户名跟密码均是 guest,guest

在rabbitmq安装目录中的sbin目录中执行
rabbitmq-plugins enable rabbitmq_management
重新启动服务


详细配置过程 (我参考这位前辈的) https://www.cnblogs.com/alangur/p/8339905.html

注意: 这里有一点就是,按照上面说的需要修改配置额文件,但是我添加了用户和权限后直接就可以远程访问登录,不知道是不是版本问。

【2】 Consul 作为服务注册中心
参考这个吧 https://www.cnblogs.com/alangur/p/8377977.html

        Consul.exe 可执行文件 后面我们会用到 

【3】 开始学习大拿们代码吧

          Surging Demo    
          clone代码 git clone https://github.com/billyang/SurgingDemo.git

【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第3张图片
亲亲真是好人,git 之后包含surging 和 他的 demo
我先学一下基础,看看代码 并没有导入数据文件

【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第4张图片
打开后编译成功(其实这是个假象,由于版本的不一致,出来了一堆错误,哎 慢慢解决吧)

升级所有的包吧
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第5张图片

【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第6张图片
在设置一下目标框架,这个可能之前是VS2015的源码

然后重新编译
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第7张图片
编译通过(这里i还有个问题 )

.UseLog4net(“log4net.config”) 这句代码执行的时候老出现错误说找不到参数,后面没办法修改了一下代码稍后我们在讨论。

至此,SurgingDemo的环境已经搭建完成

【4】 我们尝试跑起来运行一下
开启Consul服务

	  命令行执行 consul agent -dev  开启调试环境
      window power shell   ./consul agent -dev
    
      开启服务网关 surging
      命令行执行     dotnet run Surging.ApiGateway
                             dotnet Bill.Demo.Services.Server.dll
      
      这里注意:
                    调用这几个指定需要在文件对应的目录下 
                    Surging.ApiGateway  对应 项目路径                surging\src\Surging.ApiGateway
                    Bill.Demo.Services.Server.dll 对应项目下        bin\Debug\netcoreapp2.2

【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第8张图片
运行完效果如上图

consul agent -dev 执行后 浏览器中打开管理页面
http://127.0.0.1:8500
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第9张图片

dotnet run Surging.ApiGateway 网关开启后
127.0.0.1:729 如 下图
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第10张图片

dotnet Bill.Demo.Services.Server.dll 开启例子中的服务(这里会报错崩溃,稍后在说吧)

然后查看网关管理服务已经添加进去了
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第11张图片
这里我们已经成功的部署了一个Demo,然后开心的看代码学习吧


下来让我们解决一下 log4net错误问题吧
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第12张图片

找不到物理文件 (这问题我抓狂好久) 路径也改了

【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第13张图片
就是不行,还是改回来吧
【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第14张图片
把配置未见从configs里面拿出来

运行错误继续,经过多次调试发现,不止一个地方调用这个配置文件
这个方法跟踪进去看看
UseLog4net(“log4net.config”)


        public static IServiceHostBuilder UseLog4net(this IServiceHostBuilder hostBuilder,string log4NetConfigFile= "log4net.config")
        {
            
            hostBuilder.ConfigureLogging(logger =>
            {
                var section = CPlatform.AppConfig.GetSection("Logging");
                // 这里代码修改下吧 根本获取不到 Logging 配置文件也没这个东西
                //logger.AddConfiguration(CPlatform.AppConfig.GetSection("Logging"));
                // 如果是空我们就不添加了 哎
                if(section.Exists())
                    logger.AddConfiguration(section);
            });
            return hostBuilder.MapServices(mapper =>
            {
                var section = CPlatform.AppConfig.GetSection("Logging");
                log4NetConfigFile = EnvironmentHelper.GetEnvironmentVariable(log4NetConfigFile);
                mapper.Resolve().AddProvider(new Log4NetProvider(log4NetConfigFile));
            });
        }

然后编译运行

重新开启以下服务
dotnet Bill.Demo.Services.Server.dll

【ASP.NET CORE】 Surging 分布式微服务框架学习笔记(1)_第15张图片
查看一下我们的服务吧

其实整个弄来来真是一头雾水,只能慢慢消化了,下来参考这个Demo 我们自己也写一个demo,写好了在来记录吧

你可能感兴趣的:(学习笔记)