上回书搭建加了一个由3台服务器和两台开发机组成的模拟开发部署环境。接下来就是要在这个环境中进行模拟的开发和部署了。

如何开啊部署呢,先设想一下实际的应用场景。如下图所示:

浏览器通过域名访问web站点,为了web站点的高可用性和提高负载能力,可以使用各大云服务商都提供的负载均衡能力让一个域名对应几台web站点。这个过程用旧有的方案就可以胜任,只需要为这几个站点提供一个一致的身份认证就可以了。

再有就是web站点、手机app和小程序通过api网关访问各种微服务。这些微服务通过服务中心来管理,通过api网关提供调用服务。为了不让api网管成为一个单点故障,故需要多个api网关,多个api网关也通过dns解析的方式提供负载均衡服务。

创建待发现服务

新建项目

开始试验,先选定一个文件目录。在这个目录下创建一个文件夹servers用来存放服务。然后在该文件夹下创建3个文件夹,分别为server1、server2和server3。然后在这三个文件夹中分别创建一个webapi项目。在servers目录下执行如下命令:

 dotnet new webapi -n server1dotnet new webapi -n server2dotnet new webapi -n server3

建立好的文件结构如下:

打开vscode,使用文件菜单下的【将文件夹添加到工作区】方式打开server1、server2和server3三个文件夹。

制作docker镜像

在vscode中打开命令面板,输入docker命令,选择Add Docker files to Workspace

选择文件夹Server1

选择项目类型为.Ner Core

选择监听的端口号3000:

在工作区标题上点击刷新按钮,就能看到新增的和docker相关的文件。

用这个步骤分别为server2和server3添加docker文件。

打开server1中的dockerfile看到以下内容:

FROM microsoft/aspnetcore:1
LABEL Name=server1 Version=0.0.1
ARG source=.
WORKDIR /app
EXPOSE 3000
COPY $source .
ENTRYPOINT dotnet server1.dll

其中的FROM和COPY要修改一下。

FROM改为:

FROM microsoft/aspnetcore:2.0

COPY改为:

COPY $source/bin/Debug/netcoreapp2.0/ .

server2和server3中的dockerfile中的EXPOSE一节也要修改为3001和3002表示监听的端口分别为3001和3002。修改后记得保存文件。

除此之外,每个项目的监听端口也都要修改一下,webapi默认的监听端口是5000,打开Program.cs文件,把几个项目的监听端口分别改为3000、3001和3002。要和dockfile中的EXPOSE值对应。

修改完成后在项目文件夹上右键,选择在终端中打开。然后在终端中输入命令dotnet build。build项目。

完成后再执行docker命令,build docker镜像。然后执行docker image list命令就能看到刚build好的镜像。

分别为三个项目执行如下命令:

dotnet build
docker build -t server1 . #其中server1为镜像标签,server2和server3项目要改成相应的标签名。

执行docker镜像

在vscode左侧边栏中的docker中的images中能看到本地有的docker镜像,从中可以看到刚刚build好的3个镜像,右键RUN把这几个镜像运行起来。

在inages下面的containers中能看到运行中的几个容器。在运行的容器上右键,Show Logs可以查看运行中的容器的日志信息。

可以看到服务已经运行了。接下来用浏览器来验证一下吧。

server1容器中,监听3000端口:

server2容器中,监听3001端口:

server3容器中,监听3002端口:

至此,待发现的服务建立完毕。

微服务实施笔记(三)——建立待发现服务相关推荐

  1. 微服务实施笔记(四)——部署服务发现

    微服务实施笔记(四)--部署服务发现 上回书搭建了3个待用的服务.用来模拟实际中的服务.接下来就是把这几个服务注册到一个服务管理中心了. 使用consul搭建服务管理中心 在这里选用consul来做服 ...

  2. 微服务实施笔记(五)——生产环境部署

    上回书,把服务注册的整个流程在本地单机上完整的走完了,接下来就要把这些东西部署到虚拟的生产环境中去了.整个服务注册的流程都是依靠docker进行打包和部署的.当要发布到生产环境中的时候就涉及到dock ...

  3. 微服务实施笔记(二)——搭建实验部署环境

    上回书为微服务的实施定下了基调,接下来就开干吧. 搭建服务器环境 实验环境使用虚拟机搭建.本次实验需要搭建3台服务器,分别命名为server1.server2和server3.在虚拟机中安装ubunt ...

  4. 微服务实施笔记(一)

    微服务架构可以说是目前最流行的架构了,我终于也要上这条船了,为什么要上这条船呢,只是为了时尚吗?呵呵,当然不是,上这条船是为了实用的. 先说说现状.现有的系统简单.粗暴.开发是采用c#和dotnet ...

  5. 我们如何衡量一个微服务实施的成功

    4 月在深圳的 GOPS 大会上我分享了"落地微服务的难点和如何高效落地微服务",这是我 2017 年 4 月份开始做的项目总结,后来发表到了自己的博客和" Though ...

  6. GitChat · 架构 | 为什么微服务实施那么难?如何高效推进微服务架构演进

    GitChat 作者:顾宇 原文:为什么微服务实施那么难?如何高效推进微服务架构演进 关注公众号:GitChat 技术杂谈,一本正经的讲技术 前言 笔者从 2013 年加入 ThoughtWorks ...

  7. 为什么微服务实施那么难?如何高效推进微服务架构演进

    为什么微服务实施那么难?如何高效推进微服务架构演进 前言 笔者从 2013 年加入 ThoughtWorks 至今共 4年时间.在这 4 年的时间里,我分别以 开发人员, DevOps 工程师.Dev ...

  8. 爱奇艺社交泡泡后台微服务实施经验

    微服务不是万能的,也不要为了微服务而微服务.能够支持业务在各个阶段的成长是第一位的,就好比泡泡平台从最开始定位的的社交(聊天.发帖),到目前的明星.兴趣社区和运营推广,再到未来的不同业务的基础平台,每 ...

  9. Spring Cloud 微服务实战笔记

    Spring Cloud 微服务实战笔记 微服务知识 传统开发所有业务逻辑都在一个应用中, 开发,测试,部署随着需求增加会不断为单个项目增加不同业务模块:前端展现也不局限于html视图模板的形式,后端 ...

最新文章

  1. mac curl命令下载文件
  2. druid sql黑名单 报异常 sql injection violation, part alway true condition not allow
  3. .NET 不规则、可改变大小、边框半透明窗体设计
  4. setBackgroundResource和setImageResource的区别
  5. ubuntu编译安装php5 mysql nginx
  6. 将银行读卡设备读取到的身份证头像Bitmap属性转换成路径
  7. Fibonacci算法
  8. 表白,整人,无门槛,娱乐代码
  9. 各大IT公司经典面试题总结
  10. [蓝桥杯]java实现第39级台阶
  11. Unity笔记-29-ARPG游戏项目-11-完善运动
  12. 微信小程序开通直播的条件
  13. MATLAB中的偏最小二乘回归(PLSR)和主成分回归(PCR)
  14. html背景图片不重叠铺满,css背景图片怎么铺满
  15. P2P网络中的节点发现
  16. php跨域解决办法,PHP跨域问题解决方案
  17. 博图14软件安装顺序_博图软件安装顺序 为什么博途用的人不多
  18. 华为9306配置备忘(以太网
  19. 两级阻容耦合交流放大电路与电路的频率特性(文末附Multisim源文件)
  20. 【Opencv实战】一文看懂车牌识别系统全部内容,未来市场前景看好(很赞)

热门文章

  1. 给正在转行互联网朋友们的一封信
  2. Redhat Linux 5.3环境实施DB2 V9.7 HADR
  3. Python成品:运用turtle模块绘画
  4. 坐南京13路公交车,体验《头文字D》感觉!
  5. 七个好用且免费的在线代码编辑器,你喜欢哪个?
  6. 虎牙、斗鱼同道同命:共同御寒
  7. Cell:代谢组学肠道微生物群介导生酮饮食的抗癫痫作用
  8. python获取今日头条搜索信息_python爬虫(十二、爬取今日头条关键词所有文章)
  9. 软件工程专业四个方向
  10. 关于GetDC()和ReleaseDC()的问题