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

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介: 好吧,标题似乎是一个大胆的陈述,所以让我们澄清一下我所说的微服务系统是什么意思。我不是指要在生产中使用的任何类型的框架,只是一个了解微服务架构的挑战以及它如何在幕后工作的项目。我不打算将这个系列作为分步指南,因为到最后它可能至少有 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 构建和运行所有内容。
目录
相关文章
|
3月前
|
监控 数据可视化 关系型数据库
微服务架构+Java+Spring Cloud +UniApp +MySql智慧工地系统源码
项目管理:项目名称、施工单位名称、项目地址、项目地址、总造价、总面积、施工准可证、开工日期、计划竣工日期、项目状态等。
343 6
|
12天前
|
Prometheus 监控 Java
微服务架构下的服务治理策略:打破服务混乱的惊天秘籍,开启系统稳定的神奇之门!
【8月更文挑战第7天】微服务架构将应用细分为可独立部署的小服务,提升灵活性与可扩展性。但服务增多带来治理挑战。通过服务注册与发现(如Eureka)、容错机制(如Hystrix)、监控工具(如Prometheus+Grafana)、集中配置管理(如Spring Cloud Config)和服务网关(如Zuul),可有效解决这些挑战,确保系统的高可用性和性能。合理运用这些技术和策略,能充分发挥微服务优势,构建高效应用系统。
26 1
|
3月前
|
人工智能 运维 监控
构建高性能微服务架构:现代后端开发的挑战与策略构建高效自动化运维系统的关键策略
【2月更文挑战第30天】 随着企业应用的复杂性增加,传统的单体应用架构已经难以满足快速迭代和高可用性的需求。微服务架构作为解决方案,以其服务的细粒度、独立性和弹性而受到青睐。本文将深入探讨如何构建一个高性能的微服务系统,包括关键的设计原则、常用的技术栈选择以及性能优化的最佳实践。我们将分析微服务在处理分布式事务、数据一致性以及服务发现等方面的挑战,并提出相应的解决策略。通过实例分析和案例研究,我们的目标是为后端开发人员提供一套实用的指南,帮助他们构建出既能快速响应市场变化,又能保持高效率和稳定性的微服务系统。 【2月更文挑战第30天】随着信息技术的飞速发展,企业对于信息系统的稳定性和效率要求
|
13天前
|
敏捷开发 负载均衡 数据管理
构建高效后端系统:微服务架构的实践与挑战
在数字化浪潮中,企业追求的不仅是技术的更新换代,更是系统架构的革新以适应快速变化的市场需求。微服务架构作为现代软件开发的佼佼者,其灵活性和可扩展性被无数开发者所推崇。本文将深入探讨微服务架构的核心概念、实践方法以及面临的主要挑战,旨在为读者提供一份详实的微服务实施指南,同时引发对传统架构转型的深层思考。
24 0
|
2月前
|
监控 数据管理 Java
智慧城管源码,基于微服务+java+springboot+vue+uniapp开发的城管综合执法系统源码
智慧城管执法系统利用微服务和Java技术提升城市管理水平,涵盖事件处理、投诉、处罚等功能,包含PC和APP源码。系统支持执法APP,便于领导随时随地审批,具备文书模板、地图定位、法规查询等功能。此外,执法办案系统通过监控视频分析事件,实现案件全程闭环管理,包括组织、案件、信用和执法队伍管理,以及法规库等基础支撑。系统旨在优化流程,提高数据管理和效率。
智慧城管源码,基于微服务+java+springboot+vue+uniapp开发的城管综合执法系统源码
|
1月前
|
消息中间件 Java API
解析Java微服务架构:从零构建高性能系统
解析Java微服务架构:从零构建高性能系统
|
29天前
|
消息中间件 存储 缓存
架构设计篇问题之消息队列(MQ)在微服务系统中问题如何解决
架构设计篇问题之消息队列(MQ)在微服务系统中问题如何解决
|
2月前
|
Kubernetes 测试技术 持续交付
深入理解微服务架构及其在现代后端系统中的应用
本文将深入探讨微服务架构的核心概念、设计原则以及如何在现代后端系统中实现和优化它。我们将从微服务的定义开始,逐步展开讨论其优势、面临的挑战,以及如何克服这些挑战。同时,文章还会涉及微服务与容器化技术、持续集成/持续部署(CI/CD)的协同作用,以及微服务架构的未来发展趋势。读者将获得对微服务架构全面而深刻的理解,并能够识别在实施过程中可能遇到的陷阱和解决方案。
71 1
|
2月前
|
设计模式 运维 供应链
探讨微服务架构如何降低系统复杂度
探讨微服务架构如何降低系统复杂度
41 1
|
1月前
|
消息中间件 存储 SpringCloudAlibaba
会员系统01----基于Java开发的 | BTC,完整的SpringClound微服务包含内容
会员系统01----基于Java开发的货币交易所 | BTC,完整的SpringClound微服务包含内容