【澳门新葡亰平台官网】API网关组件Ocelot,Consul服务发现在windows下简单使用

介绍:

主导介绍:

安装:

下载地址:

运行:

consul agent -dev

澳门新葡亰平台官网 1

来得那一个分界面表明已经开启成功。

页面突显:

下一场访谈8500端口就足以看来页面:

澳门新葡亰平台官网 2

命令:

consul members:输出当前劳动的新闻,突显的富有配置节点。

install-package Consul:在vs项目中设置Consul

Ocelot是二个.NET
API网关。该项目针没有错是使用.NET运维微服务/面向服务结构的人手,他们供给一个联合的进口进去他们的系统。然而,它可以处理任何说HTTP并在ASP.NET
Core协理的其余平台上运营的其它东西。

劳务连接:

开启consul服务之后须要把现存的体系一连集群到consul服务,当时供给在项目中注册服务(在startup.cs文件下的Configure方法):

澳门新葡亰平台官网 3澳门新葡亰平台官网 4

 String ip = Configuration["ip"];//部署到不同服务器的时候不能写成127.0.0.1或者0.0.0.0,因为这是让服务消费者调用的地址            int port = int.Parse(Configuration["port"]);//获取服务端口            var client = new ConsulClient(ConfigurationOverview); //回调获取            var result = client.Agent.ServiceRegister(new AgentServiceRegistration()            {                ID = "ServerNameFirst" + Guid.NewGuid(),//服务编号保证不重复                Name = "MsgServer",//服务的名称                Address = ip,//服务ip地址                Port = port,//服务端口                Check = new AgentServiceCheck //健康检查                {                    DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务启动多久后反注册                    Interval = TimeSpan.FromSeconds(10),//健康检查时间间隔,或者称为心跳间隔(定时检查服务是否健康)                    HTTP = $"http://{ip}:{port}/api/Health",//健康检查地址                    Timeout = TimeSpan.FromSeconds(5)//服务的注册时间                }            });

View Code

自此在扩张贰个回调方法:

回调方法是意味着的consul服务的地址配置。

 private static void ConfigurationOverview(ConsulClientConfiguration obj)        {            //consul的地址            obj.Address = new Uri("http://127.0.0.1:8500");            //数据中心命名            obj.Datacenter = "dc1";        }

劳务到那边曾经是布局落成。可是大家怎么撤销服务哪。当然是有主意的拉。通过api大家能够精通ServiceDeregister方法是废除服务的法子。那么我们相应怎么写哪:

率先我们要去询问一下IApplicationLifetime接口:允许消费者在温婉关机期间举行清理专门的学问

ApplicationStarted:当应用程序主机已通通运营并就要等待时接触

ApplicationStopping:当应用程序主机试行精粹关机时触发。诉求可能还在运营中。关闭将阻碍那件事件形成

ApplicationStopped:当应用程序主机试行关机时触发。全部央浼应该在此一点到位。关机将截留那件事件变成。

好了,小编的Hungary语确实不佳,那几个正是活动翻译的野趣。可是也能让我们知道大约的意趣。知道有其一事物大家就能够完毕效果与利益了大器晚成体化代码:

澳门新葡亰平台官网 5澳门新葡亰平台官网 6

        public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationLifetime lifetime)        {            if (env.IsDevelopment            {                app.UseDeveloperExceptionPage();            }            app.UseMvc();            String ip = Configuration["ip"];//部署到不同服务器的时候不能写成127.0.0.1或者0.0.0.0,因为这是让服务消费者调用的地址            int port = int.Parse(Configuration["port"]);//获取服务端口            var client = new ConsulClient(ConfigurationOverview); //回调获取            string serverId = "ServerNameFirst" + Guid.NewGuid();            var result = client.Agent.ServiceRegister(new AgentServiceRegistration()            {                ID = serverId,//服务编号保证不重复                Name = "MsgServer",//服务的名称                Address = ip,//服务ip地址                Port = port,//服务端口                Check = new AgentServiceCheck //健康检查                {                    DeregisterCriticalServiceAfter = TimeSpan.FromSeconds(5),//服务启动多久后反注册                    Interval = TimeSpan.FromSeconds(10),//健康检查时间间隔,或者称为心跳间隔(定时检查服务是否健康)                    HTTP = $"http://{ip}:{port}/api/Health",//健康检查地址                    Timeout = TimeSpan.FromSeconds(5)//服务的注册时间                }            });            lifetime.ApplicationStopping.Register =>            {                Console.WriteLine("注销方法");                client.Agent.ServiceDeregister.Wait();//服务停止时取消注册            });        }

View Code

运作效果截图:

澳门新葡亰平台官网 7

Ocelot是意气风发组按一定顺序的中间件,Ocelot垄断HttpRequest对象步入由其构造钦赐的景况,直到它到达供给生成器中间件,在该中间件中开创HttpRequestMessage对象,该指标用于向上游服务发出央求。建议供给的中间件是Ocelot管道中的最终大器晚成件事。它不叫下壹当中间件。来自中游服务的响应存款和储蓄在各类恳求成效域存储库中,并在伸手重回到Ocelot管道时举行复苏。有大器晚成件中间件将HttpResponseMessage映射到HttpResponse对象上,并回到给顾客端。那基本上是与此外一些效率。

客户端:

简易介绍多少个收获服务具备地方,然后打字与印刷并从里面私自行选购取叁个进行号令并打字与印刷:

澳门新葡亰平台官网 8澳门新葡亰平台官网 9

       static List<string> Urls = new List<string>();        static void Main(string[] args)        {            Console.WriteLine("开始输出当前所有服务地址");            Catalog_Nodes().GetAwaiter().GetResult();            //Console.WriteLine(HelloConsul().GetAwaiter().GetResult;            Console.WriteLine("开始随机请求一个地址服务地址");            int index = new Random().Next(Urls.Count);            string url = Urls[index];            string param = "";//这里是开始位置            param += "{";            param += """ + "id" + "":"" + 5 + "",";            param = param.TrimEnd(',');            param += "}";            Console.WriteLine("请求的随机地址:" + url);            string result = HttpClientHelpClass.PostResponse(url, param, out string statusCode);            Console.WriteLine("返回状态:" + statusCode);            Console.WriteLine("返回结果:" + result);            Console.ReadLine();        }        public static async Task Catalog_Nodes()        {            var client = new ConsulClient();            var nodeList = await client.Agent.Services();            var url = nodeList.Response.Values;            foreach (var item in url)            {                string Address = item.Address;                int port = item.Port;                string name = item.Service;                Console.WriteLine($"地址:{Address}:{port},name:{name}");                Urls.Add($"http://{Address}:{port}/api/Test");            }        }

View Code

Ocelot只可以用于.NET
Core,何况方今生机勃勃度营造到netstandard2.0。全数上边 大家使用.NET Core
2.1做示范。

遮天盖地章节:

微服务体系文章首要介绍微服务所使用到的局地手艺和黄金年代部分技巧示范:

  • 微服务——微服务的牵线和目录
  • 微服务——服务意识在windows下轻巧利用
  • 微服务——微服务故障管理库
  • 微服务——动态代理AspectCore的采纳
  • 微服务——网关Ocelot+Consul达成集群轮询

始建多个主导示例:

第风流倜傥我们创造多少个.NET Core
2.1空项目。

自然大家依然要先引用的拉, Nuget 命令行: Install-Package
Ocelot

布局:增多二个json文件得以完毕最基本的配置:

{
    "ReRoutes": [],
    "GlobalConfiguration": {
        "BaseUrl": "urladdress"
    }
}

此间最重大的是BaseUrl。Ocelot须要了解它正在运转的U奥迪Q5L,以便施行标题查找和替换以至某个管理配置。当设置那么些U纳瓦拉L时,它应当是顾客端将看见的Ocelot运维的表面U翼虎L。

下一场大家将刚刚的配备文件出席到ASP.NET Core Configuration:Program.cs

澳门新葡亰平台官网 10澳门新葡亰平台官网 11

 public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                   .ConfigureAppConfiguration((hostingContext, builder) =>
                   {
                       builder
                       .SetBasePath(hostingContext.HostingEnvironment.ContentRootPath)
                       .AddJsonFile("ocelot.json");
                   })
                .UseStartup<Startup>();

View Code

提及底在丰盛服务以致安装中间件:Startup.cs

澳门新葡亰平台官网 12澳门新葡亰平台官网 13

 public void ConfigureServices(IServiceCollection services)
        {
            services.AddOcelot();//添加ocelot服务
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            app.UseOcelot().Wait();//设置所有的Ocelot中间件
            app.Run(async (context) =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }

View Code

 这个便是基本的所需编制程序代码。

发表评论

电子邮件地址不会被公开。 必填项已用*标注