微服务入门

简介: 微服务入门

微服务

当今的应用程序开发和 IT 系统管理由云驱动。 新式云应用程序需要是快速、敏捷、可大规模缩放且可靠的。
微服务体系结构是一种将大型应用程序分解为一组较小的服务的方法。 每个服务都在自己的进程中运行,并使用 HTTP/HTTPS、WebSocket 或 AMQP 等协议与其他进程进行通信。 每个微服务在特定的上下文边界内实现特定的端到端域或业务功能,每个微服务都必须自主开发,并且可以独立部署。 最后,每个微服务应拥有其相关的域数据模型和域逻辑,并且可以基于不同的数据存储技术(SQL、NoSQL)和不同的编程语言。
可以认为,微服务是一种思想,将以往的那种大型整体单体应用拆分成一个个可以独立运行,部署的服务,这里其中的拆分没有详细的划分,一般根据业务场景一个服务就负责实现一个业务功能,而各个服务之间则通过HTTPS/HTTP等协议进行通信(最常使用Restful API)。这就是微服务的基本思想。
当然微服务在实际使用过程中,还会有相当多的延申问题。
容器化是软件开发的一种方法,通过该方法可将应用程序或服务、其依赖项及其配置(抽象化为部署清单文件)一起打包为容器映像。 可以将容器化应用程序作为一个单元进行测试,并将它们作为容器映像实例部署到主机操作系统 (OS)。因此使用容器,是实现微服务体系结构模式的一种有效方法。
典型的微服务架构如下图:
image.png

Docker

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。

docker 使用

  1. 安装docker
  2. Dockerfile
    fsutil file createnew Dockerfile 0
    
    命令创建名为 Dockerfile 的文件
    并添加如下内容:
    FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
    WORKDIR /src
    COPY backend.csproj .
    RUN dotnet restore
    COPY . .
    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.0
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    COPY --from=build /app .
    ENTRYPOINT ["dotnet", "backend.dll"]
    

    这将在调用时按顺序执行以下步骤:

  • 拉取 mcr.microsoft.com/dotnet/aspnet:6.0 映像

  • 将映像中的工作目录设置为 /app
  • 公开端口 80 和 443
  • 将上面创建的 build 映像的 /app 目录中的所有内容复制到此映像的应用目录中
  • 将此映像的入口点设置为 dotnet,并将 backend.dll 作为参数传递
  1. 构建映像
    docker build -t mymicroservice .
    
    docker build 命令使用 Dockerfile 构建Docker 映像。
  • -t mymicroservice 参数指示它将图像标记(命名)为 mymicroservice。
  • 最后一个参数告知它要使用哪个目录来查找 Dockerfile (. 指定当前目录)。
  • 此命令将下载并生成所有依赖项以创建 Docker 映像,此操作可能需要一些时间。
  1. 查看构建结果,并运行
    docker images
    
    计算机上可用的所有映像的列表,包括刚刚创建的映像
    docker run -it --rm -p 3000:80 --name mymicroservicecontainer mymicroservice
    
    运行刚才创建的映像
    docker ps
    
    查看运行的容器
目录
相关文章
|
7月前
|
消息中间件 RocketMQ 微服务
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)(下)
分布式事物【库存微服务业务层实现、实现充值微服务、充值微服务之业务层实现、账户微服务之业务层实现】(九)-全面详解(学习总结---从入门到深化)
71 0
|
26天前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
1月前
|
Cloud Native 持续交付 云计算
云原生入门指南:从容器到微服务
【10月更文挑战第28天】在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本篇文章将带你了解云原生的基本概念,探索它如何通过容器化、微服务架构以及持续集成和持续部署(CI/CD)的实践来提升应用的可伸缩性、灵活性和可靠性。你将学习到如何利用这些技术构建和部署在云端高效运行的应用,并理解它们对DevOps文化的贡献。
58 2
|
1月前
|
Kubernetes 关系型数据库 MySQL
Kubernetes入门:搭建高可用微服务架构
【10月更文挑战第25天】在快速发展的云计算时代,微服务架构因其灵活性和可扩展性备受青睐。本文通过一个案例分析,展示了如何使用Kubernetes将传统Java Web应用迁移到Kubernetes平台并改造成微服务架构。通过定义Kubernetes服务、创建MySQL的Deployment/RC、改造Web应用以及部署Web应用,最终实现了高可用的微服务架构。Kubernetes不仅提供了服务发现和负载均衡的能力,还通过各种资源管理工具,提升了系统的可扩展性和容错性。
121 3
|
2月前
|
Dubbo Java 应用服务中间件
Dubbo学习圣经:从入门到精通 Dubbo3.0 + SpringCloud Alibaba 微服务基础框架
尼恩团队的15大技术圣经,旨在帮助开发者系统化、体系化地掌握核心技术,提升技术实力,从而在面试和工作中脱颖而出。本文介绍了如何使用Dubbo3.0与Spring Cloud Gateway进行整合,解决传统Dubbo架构缺乏HTTP入口的问题,实现高性能的微服务网关。
|
1月前
|
监控 API 持续交付
后端开发中的微服务架构:从入门到精通
【10月更文挑战第26天】 在当今的软件开发领域,微服务架构已经成为了众多企业和开发者的首选。本文将深入探讨微服务架构的核心概念、优势以及实施过程中可能遇到的挑战。我们将从基础开始,逐步深入了解如何构建、部署和管理微服务。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的见解和实用的建议。
46 0
|
4月前
|
运维 Cloud Native Android开发
云原生之旅:容器化与微服务架构的融合之道安卓应用开发入门指南
本文将深入探讨云原生技术的核心要素——容器化和微服务架构,并揭示它们如何共同推动现代软件的开发与部署。通过实际案例分析,我们将看到这两种技术如何相辅相成,助力企业实现敏捷、可扩展的IT基础设施。文章旨在为读者提供一条清晰的道路,指引如何在云原生时代利用这些技术构建和优化应用。 本文将引导初学者了解安卓应用开发的基本概念和步骤,从安装开发环境到编写一个简单的“Hello World”程序。通过循序渐进的讲解,让读者快速掌握安卓开发的核心技能,为进一步深入学习打下坚实基础。
55 1
|
4月前
|
Cloud Native 云计算 微服务
云原生入门指南:从零开始构建微服务
【8月更文挑战第31天】在数字化浪潮中,云原生技术正引领着软件开发的未来。本文旨在为初学者揭开云原生的神秘面纱,通过一个简易微服务的搭建过程,展示云原生应用的构建和部署。我们将从概念理解到实际操作,一步步带领读者走进云原生的世界,探索其背后的哲学与实践之美。
|
4月前
|
Kubernetes Cloud Native Docker
云原生入门:从容器化到微服务
【8月更文挑战第31天】在数字化浪潮中,云原生技术成为企业转型的核心驱动力。本文将带领读者从零开始,探索如何利用云原生技术构建现代、高效的应用架构。我们将一起学习容器化的基础,深入理解Docker和Kubernetes的工作原理,并实践构建一个简单的微服务应用。通过代码示例和实操演练,让理论与实践相结合,为读者揭开云原生技术的神秘面纱。
|
6月前
|
存储 搜索推荐 Java
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
微服务SpringCloud ES分布式全文搜索引擎简介 下载安装及简单操作入门
86 2