手机 pc网站模板,软件如何开发制作,个人做门户网站需要注册,江苏常州网1. 服务注册 对 Consul 进行服务注册之前#xff0c;需要先部署一个服务站点#xff0c;我们可以使用 ASP.NET Core 创建 Web 应用程序#xff0c;并且部署到 Ubuntu 服务器上。 ASP.NET Core Hell World 应用程序示例代码#xff0c;只需要三个文件#xff0c;Startup.cs… 1. 服务注册 对 Consul 进行服务注册之前需要先部署一个服务站点我们可以使用 ASP.NET Core 创建 Web 应用程序并且部署到 Ubuntu 服务器上。 ASP.NET Core Hell World 应用程序示例代码只需要三个文件Startup.cs代码 public class Startup{ // This method gets called by the runtime. Use this method to add services to the container.// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID398940public void ConfigureServices(IServiceCollection services) {} // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {loggerFactory.AddConsole(); if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}app.Run(async (context) { await context.Response.WriteAsync(Hello World!);});}
} Program.cs代码 public class Program{ public static void Main(string[] args) { var host new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).UseStartupStartup().UseUrls(http://*:5000).Build();host.Run();}
} project.json配置 {dependencies: {Microsoft.NETCore.App: {version: 1.0.1},Microsoft.AspNetCore.Diagnostics: 1.0.0,Microsoft.AspNetCore.Server.Kestrel: 1.0.1,Microsoft.Extensions.Logging.Console: 1.0.0},frameworks: {netcoreapp1.0: {imports: [dotnet5.6,portable-net45win8]}},runtimes: { ubuntu.14.04-x64: {}, osx.10.11-x64: {}, win8-x64: {} },buildOptions: {emitEntryPoint: true,preserveCompilationContext: true},runtimeOptions: {configProperties: {System.GC.Server: true}}} 将这三个文件使用命令传输到 Ubuntu 服务器如下 $ scp -r ~/documents/hwapp_web vagrant10.9.10.173:~/hwapp_web 传输好之后使用dotnet *命令程序包还原、构建、启动站点。 然后在 Ubuntu 服务器创建一个consul.d文件目录 $ sudo mkdir /etc/consul.d 配置 Consul 初始化的时候-config-dir需要指向上面创建的目录 consul agent -data-dir /tmp/consul -nodeconsul-client-1 -bind10.9.10.173 -dcdc1 -config-dir/etc/consul.d Consul 会加载/etc/consul.d目录下所有*.josn配置文件比如我们在此目录下创建这样一个hwapp_web.json配置文件针对hwapp_web服务 {service: {name: hwapp_web,tags: [master],address: 10.9.10.173,port: 5000,checks: [{http: http://10.9.10.173:5000/health,interval: 10s}]}
} http://10.9.10.173:5000/health是健康检查的路径上面我们创建的hwapp_web项目并没有实现为防止报错你可以改为http://10.9.10.173:5000。 另外如果在配置 Consul 的时候出现了下面错误 Error decoding /etc/consul.d/hwapp_web.json: invalid character ï looking for beginning of value 错误的原因是文件编码问题需要将 Encoding 修改为ANSI编码可以用 TXT 修改。 配置好之后就可以通过 Consul 后台http://localhost:8500查看添加的服务信息了 2. 服务发现 服务注册好之后需要进行发现才能进行服务之间的调用最终需要知晓服务具体在哪台服务器上也就是需要发现服务器的 IPConsul 服务发现有两种方式 DNS APIHTTP API 2.1 DNS API 使用 DNS API 方式进行服务发现需要知道服务 DNS 的具体名称默认情况下所有注册服务的 DNS 名称为ServerName.service.consul这个命名空间也可以进行手动配置。 使用下面命令进行服务发现 $ dig 127.0.0.1 -p 8600 hwapp_web.service.consul; DiG 9.8.3-P1 127.0.0.1 -p 8600 hwapp_web.service.consul
; (1 server found)
;; global options: cmd
;; Got answer:;; -HEADER- opcode: QUERY, status: NOERROR, id: 12340;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; WARNING: recursion requested but not available;; QUESTION SECTION:;hwapp_web.service.consul. IN A;; ANSWER SECTION:hwapp_web.service.consul. 0 IN A 10.9.10.173;; Query time: 4 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1);; WHEN: Fri Dec 30 15:30:22 2016;; MSG SIZE rcvd: 58 可以看到一个服务被发现了hwapp_web并且可以得到此服务所在的具体 IP10.9.10.173。 包含更详细信息的服务发现命令包含服务端口 $ dig 127.0.0.1 -p 8600 hwapp_web.service.consul SRV; DiG 9.8.3-P1 127.0.0.1 -p 8600 hwapp_web.service.consul SRV
; (1 server found)
;; global options: cmd
;; Got answer:;; -HEADER- opcode: QUERY, status: NOERROR, id: 3174;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1;; WARNING: recursion requested but not available;; QUESTION SECTION:;hwapp_web.service.consul. IN SRV;; ANSWER SECTION:hwapp_web.service.consul. 0 IN SRV 1 1 5000 consul-worker-1.node.dc1.consul.;; ADDITIONAL SECTION:consul-worker-1.node.dc1.consul. 0 IN A 10.9.10.173;; Query time: 2 msec
;; SERVER: 127.0.0.1#8600(127.0.0.1);; WHEN: Fri Dec 30 15:33:59 2016;; MSG SIZE rcvd: 103 可以看到hwapp_web服务的端口为5000。 2.1 HTTP API HTTP API 进行服务发现非常简单执行下面命令就可以了 $ curl http://localhost:8500/v1/catalog/service/hwapp_web[{Node:consul-worker-1,Address:10.9.10.173,TaggedAddresses:{lan:10.9.10.173,wan:10.9.10.173},ServiceID:hwapp_web,ServiceName:hwapp_web,ServiceTags:[master],ServiceAddress:10.9.10.173,ServicePort:5000,ServiceEnableTagOverride:false,CreateIndex:1361,ModifyIndex:1361}] 返回的是一个 JSON 信息你可以手动在浏览器输入http://localhost:8500/v1/catalog/service/hwapp_web 查询地址中最后的hwapp_web是服务的名称。 Consul 基本服务发现就是上面两种当然你也可以基于它们写针对不同语言和平台的 SDK以便应用程序进行调用。 参考地址 使用 Consul 实现分布式服务注册和发现Consul 入门 03 注册服务 相关文章 使用C# 和Consul进行分布式系统协调Consul入门 原文地址 http://www.cnblogs.com/xishuai/p/services-registery-and-discovery-by-consul.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注