当前位置:网站首页>微服务入门
微服务入门
2022-07-04 12:42:00 【华为云】
微服务
当今的应用程序开发和 IT 系统管理由云驱动。 新式云应用程序需要是快速、敏捷、可大规模缩放且可靠的。
微服务体系结构是一种将大型应用程序分解为一组较小的服务的方法。 每个服务都在自己的进程中运行,并使用 HTTP/HTTPS、WebSocket 或 AMQP 等协议与其他进程进行通信。 每个微服务在特定的上下文边界内实现特定的端到端域或业务功能,每个微服务都必须自主开发,并且可以独立部署。 最后,每个微服务应拥有其相关的域数据模型和域逻辑,并且可以基于不同的数据存储技术(SQL、NoSQL)和不同的编程语言。
可以认为,微服务是一种思想,将以往的那种大型整体单体应用拆分成一个个可以独立运行,部署的服务,这里其中的拆分没有详细的划分,一般根据业务场景一个服务就负责实现一个业务功能,而各个服务之间则通过HTTPS/HTTP等协议进行通信(最常使用Restful API)。这就是微服务的基本思想。
当然微服务在实际使用过程中,还会有相当多的延申问题。
容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 可以将容器化应用程序作为一个单元进行测试,并将它们作为容器映像实例部署到主机操作系统 (OS)。因此使用容器,是实现微服务体系结构模式的一种有效方法。
典型的微服务架构如下图:
Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。
docker 使用
- 安装docker
- Dockerfile
fsutil file createnew Dockerfile 0
命令创建名为 Dockerfile 的文件
并添加如下内容:
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS buildWORKDIR /srcCOPY backend.csproj .RUN dotnet restoreCOPY . .RUN dotnet publish -c release -o /app
这将在调用时按顺序执行以下步骤:
- 拉取 mcr.microsoft.com/dotnet/sdk:6.0 映像并将其命名为 build
- 将映像中的工作目录设置为 /src
- 将在本地找到的名为 backend.csproj 的文件复制到刚创建的 /src 目录中
- 在项目中调用 dotnet restore
- 将本地工作目录中的所有内容复制到映像中
- 在项目中调用 dotnet publish
FROM mcr.microsoft.com/dotnet/aspnet:6.0WORKDIR /appEXPOSE 80EXPOSE 443COPY --from=build /app .ENTRYPOINT ["dotnet", "backend.dll"]
这将在调用时按顺序执行以下步骤:
- 拉取 mcr.microsoft.com/dotnet/aspnet:6.0 映像
- 将映像中的工作目录设置为 /app
- 公开端口 80 和 443
- 将上面创建的 build 映像的 /app 目录中的所有内容复制到此映像的应用目录中
- 将此映像的入口点设置为 dotnet,并将 backend.dll 作为参数传递
- 构建映像
docker build -t mymicroservice .
docker build 命令使用 Dockerfile 构建Docker 映像。
- -t mymicroservice 参数指示它将图像标记(命名)为 mymicroservice。
- 最后一个参数告知它要使用哪个目录来查找 Dockerfile (. 指定当前目录)。
- 此命令将下载并生成所有依赖项以创建 Docker 映像,此操作可能需要一些时间。
- 查看构建结果,并运行
docker images
计算机上可用的所有映像的列表,包括刚刚创建的映像
docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice
运行刚才创建的映像
docker ps
查看运行的容器
边栏推荐
- Is the outdoor LED screen waterproof?
- 「小技巧」给Seurat对象瘦瘦身
- Golang sets the small details of goproxy proxy proxy, which is applicable to go module download timeout and Alibaba cloud image go module download timeout
- ISO 27001 Information Security Management System Certification
- Zhongang Mining: in order to ensure sufficient supply of fluorite, it is imperative to open source and save flow
- 16. Memory usage and segmentation
- Configure WebDAV server on Apache
- 实时云交互如何助力教育行业发展
- Simple understanding of binary search
- Peak detection of measured signal
猜你喜欢
ISO 27001 Information Security Management System Certification
Cann operator: using iterators to efficiently realize tensor data cutting and blocking processing
Dgraph: large scale dynamic graph dataset
分布式事务相关概念与理论
Zhongang Mining: in order to ensure sufficient supply of fluorite, it is imperative to open source and save flow
runc hang 导致 Kubernetes 节点 NotReady
阿里云有奖体验:用PolarDB-X搭建一个高可用系统
AI 绘画极简教程
Meituan Ali's Application Practice on multimodal recall
N++ is not reliable
随机推荐
Efficient! Build FTP working environment with virtual users
高效!用虚拟用户搭建FTP工作环境
Runc hang causes the kubernetes node notready
Etcd 存储,Watch 以及过期机制
CA:用于移动端的高效坐标注意力机制 | CVPR 2021
ISO 27001 Information Security Management System Certification
Full arrangement (medium difficulty)
Simple understanding of binary search
Use fail2ban to prevent password attempts
eclipse链接数据库中测试SQL语句删除出现SQL语句语法错误
mysql三级分销代理关系存储
AbstractDispatcherServletInitializer 的实现类为什么可以在初始化Web容器的时候被调用
二分查找的简单理解
CTF竞赛题解之stm32逆向入门
Talk about the design and implementation logic of payment process
runc hang 导致 Kubernetes 节点 NotReady
n++也不靠谱
"Pre training weekly" issue 52: shielding visual pre training and goal-oriented dialogue
使用 NSProxy 实现消息转发
Daily Mathematics Series 57: February 26