微服务实施笔记(三)——建立待发现服务
上回书搭建加了一个由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端口:
至此,待发现的服务建立完毕。
微服务实施笔记(三)——建立待发现服务相关推荐
- 微服务实施笔记(四)——部署服务发现
微服务实施笔记(四)--部署服务发现 上回书搭建了3个待用的服务.用来模拟实际中的服务.接下来就是把这几个服务注册到一个服务管理中心了. 使用consul搭建服务管理中心 在这里选用consul来做服 ...
- 微服务实施笔记(五)——生产环境部署
上回书,把服务注册的整个流程在本地单机上完整的走完了,接下来就要把这些东西部署到虚拟的生产环境中去了.整个服务注册的流程都是依靠docker进行打包和部署的.当要发布到生产环境中的时候就涉及到dock ...
- 微服务实施笔记(二)——搭建实验部署环境
上回书为微服务的实施定下了基调,接下来就开干吧. 搭建服务器环境 实验环境使用虚拟机搭建.本次实验需要搭建3台服务器,分别命名为server1.server2和server3.在虚拟机中安装ubunt ...
- 微服务实施笔记(一)
微服务架构可以说是目前最流行的架构了,我终于也要上这条船了,为什么要上这条船呢,只是为了时尚吗?呵呵,当然不是,上这条船是为了实用的. 先说说现状.现有的系统简单.粗暴.开发是采用c#和dotnet ...
- 我们如何衡量一个微服务实施的成功
4 月在深圳的 GOPS 大会上我分享了"落地微服务的难点和如何高效落地微服务",这是我 2017 年 4 月份开始做的项目总结,后来发表到了自己的博客和" Though ...
- GitChat · 架构 | 为什么微服务实施那么难?如何高效推进微服务架构演进
GitChat 作者:顾宇 原文:为什么微服务实施那么难?如何高效推进微服务架构演进 关注公众号:GitChat 技术杂谈,一本正经的讲技术 前言 笔者从 2013 年加入 ThoughtWorks ...
- 为什么微服务实施那么难?如何高效推进微服务架构演进
为什么微服务实施那么难?如何高效推进微服务架构演进 前言 笔者从 2013 年加入 ThoughtWorks 至今共 4年时间.在这 4 年的时间里,我分别以 开发人员, DevOps 工程师.Dev ...
- 爱奇艺社交泡泡后台微服务实施经验
微服务不是万能的,也不要为了微服务而微服务.能够支持业务在各个阶段的成长是第一位的,就好比泡泡平台从最开始定位的的社交(聊天.发帖),到目前的明星.兴趣社区和运营推广,再到未来的不同业务的基础平台,每 ...
- Spring Cloud 微服务实战笔记
Spring Cloud 微服务实战笔记 微服务知识 传统开发所有业务逻辑都在一个应用中, 开发,测试,部署随着需求增加会不断为单个项目增加不同业务模块:前端展现也不局限于html视图模板的形式,后端 ...
最新文章
- mac curl命令下载文件
- druid sql黑名单 报异常 sql injection violation, part alway true condition not allow
- .NET 不规则、可改变大小、边框半透明窗体设计
- setBackgroundResource和setImageResource的区别
- ubuntu编译安装php5 mysql nginx
- 将银行读卡设备读取到的身份证头像Bitmap属性转换成路径
- Fibonacci算法
- 表白,整人,无门槛,娱乐代码
- 各大IT公司经典面试题总结
- [蓝桥杯]java实现第39级台阶
- Unity笔记-29-ARPG游戏项目-11-完善运动
- 微信小程序开通直播的条件
- MATLAB中的偏最小二乘回归(PLSR)和主成分回归(PCR)
- html背景图片不重叠铺满,css背景图片怎么铺满
- P2P网络中的节点发现
- php跨域解决办法,PHP跨域问题解决方案
- 博图14软件安装顺序_博图软件安装顺序 为什么博途用的人不多
- 华为9306配置备忘(以太网
- 两级阻容耦合交流放大电路与电路的频率特性(文末附Multisim源文件)
- 【Opencv实战】一文看懂车牌识别系统全部内容,未来市场前景看好(很赞)