从零开始创建微服务系统四 - 第一部分

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 好吧,标题似乎是一个大胆的陈述,所以让我们澄清一下我所说的微服务系统是什么意思。我不是指要在生产中使用的任何类型的框架,只是一个了解微服务架构的挑战以及它如何在幕后工作的项目。我不打算将这个系列作为分步指南,因为到最后它可能至少有 100 篇文章。相反,我将尝试写关于设计选择、如何编写一些机制并突出一些有趣的问题(从全栈开发人员的角度来看)我在此过程中偶然发现。

介绍

好吧,标题似乎是一个大胆的陈述,所以让我们澄清一下我所说的微服务系统是什么意思。我不是指要在生产中使用的任何类型的框架,只是一个了解微服务架构的挑战以及它如何在幕后工作的项目。

我不打算将这个系列作为分步指南,因为到最后它可能至少有 100 篇文章。相反,我将尝试写关于设计选择、如何编写一些机制并突出一些有趣的问题(从全栈开发人员的角度来看)我在此过程中偶然发现。

我们在建造什么

首先,我们的目标是什么类型的系统?这将决定我们需要什么样的服务,以及系统的非功能性需求。

最近在玩《中土世界:战争之影》,心想:为什么不为索伦军队创建管理应用程序呢?因此,一个系统来统治他们所有人的想法(简称*“*一个系统” )。然后我决定把它变成一种学习体验,所以我不会把自己限制在我知道的 Java 和 Angular 上,也会尝试学习其他语言。

技术栈

我打算使用和学习至少基础知识的技术是:

  1. 对于服务:
  2. Java ( Zulu) 和Spring BOOT (我从头开始写的东西是有限制的;))
  3. Haskell- 因为我以前从未使用过函数式语言
  4. Python- 因为它广受欢迎
  5. GoLang - 因为为什么不
  6. 对于前端:
  7. UI的选型
  8. 服务器端的Java ( Zulu) 和Spring BOOT
  9. 对于部署:
  10. Docker和 Docker-compose
  11. 架构模式:
  12. 微服务
  13. 前端SPA

现在,已经决定了,我们是否要使用 Netflix Hystrix、Ribbon 等库?我们要使用 RabbitMQ 吗?嗯,没有。由于这是一个学习经验,我们将尝试自己实施。它可能最终不会成为有史以来最好的代码,但它会让我们了解这些库是如何实现的,这反过来又可以帮助我们在职业生涯中更好地调试或实现其他解决方案。

架构 (v0.0.1)

好的,或多或少地决定了技术堆栈,我们现在需要设计实际的架构。The One基本上是一个资源管理系统,其中资源范围从乌鲁克到前哨,再到食物链和武器储存。

每个管理系统都需要有某种用户数据库来允许访问控制、身份验证和授权服务,以及 UI 应用程序来允许用户友好地访问。但是由于选择的架构是微服务,我们不能简单地编写一个 Spring BOOT 应用程序并完成它,我们还需要:

  • API网关连接不同的服务
  • 服务发现允许我们动态启动和停止服务
  • 记录器服务聚合来自每个服务的日志
  • 服务监控
  • 还有一些其他的事情

基本图将如下所示(为了使其更小,我省略了一些内容):

看起来它不会做太多工作 - 通常在公司中可能不会 - 但我们将从头开始构建它,因此,第一个里程碑将是:

  1. 创建 API 网关服务,代理对用户服务的请求,以从服务发现获得地址。
  2. 用户服务和 API 网关将等待服务发现启动,然后再启动自己。
  3. 启动后,用户服务将向服务发现注册自己,并传递可用的 IP 和端口。
  4. 将有脚本在本地或使用 docker 构建和运行所有内容。
目录
相关文章
|
30天前
|
Kubernetes 负载均衡 微服务
Kubernetes 生态系统中的微服务治理
【8月更文第29天】随着微服务架构的普及,管理分布式系统的复杂性也随之增加。Kubernetes 作为容器编排的事实标准,为微服务架构提供了强大的支持。结合像 Istio 这样的服务网格工具,Kubernetes 能够有效地解决微服务治理中的诸多挑战,如服务发现、负载均衡、流量管理和安全策略等。
31 1
|
30天前
|
Java UED Sentinel
微服务守护神:Spring Cloud Sentinel,让你的系统在流量洪峰中稳如磐石!
【8月更文挑战第29天】Spring Cloud Sentinel结合了阿里巴巴Sentinel的流控、降级、熔断和热点规则等特性,为微服务架构下的应用提供了一套完整的流量控制解决方案。它能够有效应对突发流量,保护服务稳定性,避免雪崩效应,确保系统在高并发下健康运行。通过简单的配置和注解即可实现高效流量控制,适用于高并发场景、依赖服务不稳定及资源保护等多种情况,显著提升系统健壮性和用户体验。
56 1
|
15天前
|
缓存 Java 开发者
开发故事:一个 @Async 如何搞瘫整个微服务系统
大家好,我是小米,一个热爱分享技术的29岁开发者。本文讲述了一个困扰我们团队的开发环境问题,最终发现罪魁祸首竟是 `@Async` 注解。我们通过详细分析错误日志和 Spring 的 Bean 代理机制,逐步排查并解决了这一难题。文章介绍了三种解决方案:调整依赖结构、使用 `@Lazy` 延迟加载以及禁用 `@Async` 的代理功能。希望对你有所帮助!欢迎关注我的微信公众号“软件求生”,获取更多技术干货!
18 5
开发故事:一个 @Async 如何搞瘫整个微服务系统
|
3天前
|
消息中间件 Dubbo Java
聊聊单体服务VS微服务系统
聊聊单体服务VS微服务系统
|
15天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
24 3
|
1月前
|
存储 API 持续交付
探索微服务架构:构建灵活、可扩展的后端系统
【8月更文挑战第25天】 本文将引导您理解微服务架构的核心概念,探讨其对现代后端系统设计的影响。我们将从基础讲起,逐步深入到微服务的高级应用,旨在启发读者思考如何利用微服务原则优化后端开发实践。
42 4
|
1月前
|
负载均衡 Cloud Native 中间件
核心系统转型问题之微服务架构并存的问题如何解决
核心系统转型问题之微服务架构并存的问题如何解决
|
1月前
|
Java Docker 微服务
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。
微服务架构已成为Java Web开发的新趋势,它通过将应用分解为独立、可部署的服务单元,提升了系统的灵活性与可维护性。每个服务负责特定功能,通过轻量通信机制协作。利用Spring Boot与Spring Cloud等框架可简化开发流程,支持模块化设计、独立部署、技术多样性和容错性,适应快速迭代的需求。
64 1
|
1月前
|
Java 微服务 Spring
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
文章介绍了如何利用Spring Cloud Alibaba快速构建大型电商系统的分布式微服务,包括服务限流降级等主要功能的实现,并通过注解和配置简化了Spring Cloud应用的接入和搭建过程。
SpringBoot+Vue+Spring Cloud Alibaba 实现大型电商系统【分布式微服务实现】
|
28天前
|
微服务 API Java
微服务架构大揭秘!Play Framework如何助力构建松耦合系统?一场技术革命即将上演!
【8月更文挑战第31天】互联网技术飞速发展,微服务架构成为企业级应用主流。微服务将单一应用拆分成多个小服务,通过轻量级通信机制交互。高性能Java Web框架Play Framework具备轻量级、易扩展特性,适合构建微服务。本文探讨使用Play Framework构建松耦合微服务系统的方法。Play采用响应式编程模型,支持模块化开发,提供丰富生态系统,便于快速构建功能完善的微服务。
33 0