如何学习微服务架构?(项目学习)

news2024/11/28 15:57:15

哪些项目适合使用微服务架构?

对于一般的公司来说,微服务的实践有着很大的技术挑战,所以并不是所有的公司都适合将整体架构拆分成微服务架构。一般来说,微服务架构更适合于未来具有一定扩展复杂度、具有大量增量用户期望的应用,比如一些新兴的互联网公司应用。这些公司不可能在业务初期购买大量或昂贵的机器,但他们也必须考虑在成功后应对庞大的用户数量。此时,微服务架构已成为最佳选择。此外,对于那些规模大、业务复杂度高、跟踪时间长的项目,也适合考虑使用微服务架构。

在决定使用微服务架构之后,面临的另一个问题是如何将系统拆分为微服务。有关微服务的拆分,请参阅以下建议。

· 通过业务功能分解并定义与业务功能相对应的服务。

· 将域驱动设计分解为多个子域。

· 按照动词或用例分解,并定义负责特定操作的服务,例如一个负责完成订单的航运服务。

· 通过定义一个对给定类型的实体或资源的所有操作负责的服务来分解名词或资源,例如一个负责管理用户账户的账户服务。

由于每个公司项目的实际情况不同,所以微服务的拆分在实际操作时,会涉及到很多不同的细节问题,这里就不一一描述了,但总体来说,项目在拆分时按照上述几点建议即可。

微服务架构中涉及的常见组件有哪些?

·服务注册中心:注册系统中所有服务的地方。

·服务注册:服务提供方将自己调用地址注册到服务注册中心,让服务调用方能够方便地找到自己。

·服务发现:服务调用方从服务注册中心找到自己需要调用服务的地址。 ·负载均衡:服务提供方一般以多实例的形式提供服务,使用负载均衡能够让服务调用方连接到合适的服务节点。

·服务容错:通过断路器(也称熔断器)等一系列的服务保护机制,保证服务调用者在调用异常服务时快速地返回结果,避免大量的同步等待。

·服务网关:也称为API网关,是服务调用的唯一入口,可以在这个组件中实现用户鉴权、动态路由、灰度发布、负载限流等功能。

·分布式配置中心:将本地化的配置信息(properties、yml、yaml 等)注册到配置中心,实现程序包在开发、测试、生产环境的无差别性,方便程序包的迁移。

除此之外,读者在学习时,可能还会在一些参考资料中看到服务的健康检查、日志处理等组件内容。以上我们介绍了微服务架构中涉及的一些常见组件名称以及作用。

微服务架构的技术选型你知道怎么选吗?

在微服务架构中,不同的组件(包括微服务实例、注册中心和API网关等组件)需要根据不同的情况来选取相应的技术,那么我们可以使用哪些技术呢?

1. 微服务实例的开发

微服务的开发可以选用的框架技术有 Spring 团队的 Spring Boot、Jboss 公司的 WildFly Swarm和Java EE官方的微服务框架KumuluzEE等。

2. 服务的注册与发现

架构中服务的注册与发现功能,可以使用的技术有 Spring Cloud Eureka、Apache Zookeeper、Consul、Etcd和Dubbo等,它们都是用于服务注册和发现的技术。

3. 负载均衡

负载均衡可以使用的技术有Spring Cloud Ribbon和Dubbo等。

4. 服务容错

服务容错的技术可以选用Hystrix,在Spring Cloud的子项目中包含Spring Cloud Hystrix。

5. API网关

架构中的API网关服务,可以使用的技术有Spring Cloud Zuul、Spring Reactor、Netty或NodeJS等。

6. 分布式配置中心

分布式配置中心可以使用Spring Cloud Config。

7. 调试

微服务应用的测试工作可以使用Swagger。Swagger是当前最受欢迎的REST API文档生成工具之一,它提供了强大的页面测试功能来调试每个RESTful API。

8. 部署

微服务的官方文档中推荐使用Docker来打包和部署微服务。由于Docker是一个开源的应用容器引擎,具有可移植性强、启动速度快等特点,所以适合跑一些轻量的应用。

9. 持续集成

为了实现服务的自动化部署,我们可以通过 Jenkins 搭建自动化部署系统,并使用 Docker进行容器化封装。

在上面的技术选型中,从微服务注册与发现、负载均衡、容错、API网关和分布式配置中心组件的可选技术内,我们都看到了Spring Cloud的身影。实际上,Spring Cloud的子项目中,已经提供了构建微服务所需的所有解决方案。

为了方便大家学习,并能快速地掌握微服务架构的使用,我们将使用 Spring Boot+Spring Cloud+Docker技术来实现微服务架构。

我们会使用Spring Boot实现微服务实例的开发,使用Spring Cloud Eureka来实现服务的注册与发现,使用Spring Cloud Hystrix的断路器功能来实现服务容错,使用Spring Cloud Ribbon实现服务间的负载均衡,使用Spring Cloud Zuul实现服务网关,使用Spring Cloud Config作为分布式配置中心,使用Swagger对微服务进行测试,并使用Jenkins的持续集成功能来实现自动化部署。

微服务架构中各个组件的技术选型有很多,对于已经实施过微服务并且项目自成体系的公司来说,Spring Cloud可能并没有太大的吸引力,但对于还未实施微服务或项目没有自成体系的公司来说,Spring Cloud将是一个非常好的选择。

除了Spring Cloud之外,Dubbo也是目前国内比较流行的分布式服务框架,它们都具备分布式服务治理相关的功能,都能够提供服务注册、发现、路由和负载均衡的能力。相比之下,Spring Cloud提供了更加完整的一套企业级分布式云应用的解决方案,包含了微服务组件中的方方面面,并能够结合Spring Boot、Docker实现快速开发的目的,而Dubbo只有Spring Cloud的一部分功能。由于二者具体的实现方式不同,因此并没有好坏之分。企业在选用时,需根据自身情况选择。

Java web从入门到企业实战完整版

JavaWeb是整个Web开发的基础课程,需要掌握三部分内容:数据库、前端、web核心。本套JavaWeb教程旨在用最短的时间掌握最全的JavaWeb核心技术,使学习效率猛增2倍,并且可以为后期的分布式、微服务打下坚实的基础。该套视频全是干货,不墨迹,没废话,让你花最短时间学会,包括javaweb+mysql+maven+html+css+ajax+vue+项目实战等内容,是目前站内最全的JavaWeb技术栈课程。

https://www.bilibili.com/video/BV1Qf4y1T7Hx/?spm_id_from=333.999.0.0&vd_source=9c4eaee002825d9385410d4fde301d24

学习要点:

1. 不要光听不练:该阶段知识虽然难度不大,但是存在很多小的细节,这些细节在听课过程中,你是体会不到的,因为我在操作的时候不会出问题(我已经操作N遍了),只有你动手练习后,才会注意到。

2. 遇到问题不要怕:首先,说明一个观点,优秀的程序员就是在不停的调错过程中成长起来的,你调试的错误越多,你的经验,能力才能得到提升。然后,遇到错误后,分三步走:

(1) 自己根据错误提示分析:分析的手段无非就是看异常信息,然后定位问题,然后通过经验进行分析(经验考积累)

(2) 搜索引擎:遇到自己搞不定的异常提示,直接把错误提示粘贴到搜索引擎中,前三页基本都能找到答案。

(3) 请教他人:当然,搜索引擎不是万能的,有些问题,很多同学不知道怎么描述,也搜索不出来,这时可以请教他人,如果你找不到别人,可以私信给我留言,大部分的问题,我应该都能搞定。

所以,核心点在于别怕问题。

3. 持之以恒:对于大多数人来说,学习是一件枯燥且乏味的事情。但这件事情是最正确,也是回报最大的事。然而,这需要一个相对长的周期,学不到一定程度是没有意义的,还会让你陷入自我否定和怀疑中。所以,朋友们,请坚持住!

最后祝大家学习顺利,能在这一行越走越远。

PS:如果你觉得课程还不错的话,记得点赞投币转发哦,你的肯定,是我们做课最大的动力!

配套资源:

https://pan.baidu.com/s/1OwoTxJvsQ6Ka4ZATBjhuHg?pwd=1234

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142734.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新综述:基于语言模型提示学习的推理

©PaperWeekly 原创 作者 | OE-Heart引言推理能力是人类智能的核心能力之一。随着预训练技术的不断发展,大模型辅之以提示学习(如 Chain-of-Thought Prompting [1])涌现出一系列的惊人的推理能力,引起了学术界、工业界学者的…

动态规划——数位dp

数位dp 文章目录数位dp概述题目特征基本原理计数技巧模板例题度的数量思路代码数字游戏思路代码不要62思路代码概述 数位是指把一个数字按照个、十、百、千等等一位一位地拆开,关注它每一位上的数字。如果拆的是十进制数,那么每一位数字都是 0~9&#xf…

unity 前向渲染 渲染阴影原理

下面情况默认是 前向渲染路径,场景中平行光开启了阴影方式原理备注ShadowMap把相机放到光源的位置,那么场景中该光源的阴影区域就是那些相机看不到的位置得到的是:场景中距离光源最近的表面位置(深度信息)unity中专门的…

一个基于SpringBoot+vue的学生信息管理系统详细设计

一个基于SpringBootvue的学生信息管理系统详细设计 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

【docker08】本地镜像发布到阿里云

本地镜像发布到阿里云流程 1.流程 2.镜像的生成方法 基于当前容器创建一个新的镜像,新功能增强命令: docker commit [OPTIONS] 容器ID [REPOSITORY[:TAG]] 3.将本地镜像推送到阿里云 3.1本地镜像素材原型 3.2阿里云开发者平台 进入阿里云找到控制台进…

Word控件Spire.Doc 【Table】教程(2):如何设置Word表格列宽

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下,轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具,专注于创建、编辑、转…

CV中一些常见的特征点

Harris、SIFT、SURF、ORB特征点总结本篇博客介绍一些常见的特征点。Brief描述子:编辑切换为居中添加图片注释,不超过 140 字(可选)编辑切换为居中添加图片注释,不超过 140 字(可选)编辑切换为居…

基于JavaSpringboot+Vue实现前后端分离房屋租赁系统

基于JavaSpringbootVue实现前后端分离房屋租赁系统 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码…

已解决Python pandas.read_excel读取Excel文件报错

已解决(Python pandas.read_excel读取Excel文件报错)io ExcelFile(io,storage_optionsstorage.options, engineengine) 文章目录报错代码报错原因解决方法帮忙解决报错代码 粉丝群一个小伙伴想用pandas.read_excel读取Excel文件&#xff…

Linux文件管理---磁盘上文件如何管理(inode)

文章目录磁盘与文件的关系磁盘的逻辑结构与操作系统关系真实的磁盘逻辑结构一台计算机磁盘上的文件是非常多的,这些文件该如何进行管理?我们想打开某个磁盘上的文件究竟是如何找到该文件的?磁盘与文件的关系 这就是磁盘的物理模型和存储结构 …

Ubuntu20.04安装Mysql5.7

目录 1、下载安装包 2、解压 3、删除测试安装包 4、开始安装Mysql 4.1、如果碰到缺少依赖处理方法,没有碰到忽略即可 5、配置MySQL 5.1、查看mysql状态 5.2、设置root密码 1、下载安装包 wget https://cdn.mysql.com/archives/mysql-5.7/mysql-server_5.7.3…

操作系统死锁相关知识点介绍

死锁 死锁的定义 一组进程中,每个进程都无限等待被该组进程中另一进程所占有的资源,因而永远无法得到的资源,这种现象称为进程死锁,这一组进程就称为死锁进程。 如果死锁发生,会浪费大量系统资源,甚至导致…

【CSDN周赛】第21期第二题千问万问

题目描述: 给定大小为n的整数序列A. 现在会有q次询问,询问子区间的整数数量。 思路: 1、考的时候没做出来,但是感觉不难,一直不懂错在哪里,所以比赛结束后继续修改; 2、以下代码没有按调用函…

QTextDocument

一、描述 此类用来储存结构化的富文本文档。 二、类型成员 1、enum QTextDocument::FindFlag:此枚举描述查找函数可用的选项。这些选项可以用“|”组合: FindBackward:向后搜索。FindCaseSensitive:不区分大小写。FindWholeWo…

用户单点登录

一、用户身份认证 1、单一服务器模式 我们使用传统的Session贺Coookie的模式,就可以完成单一服务器的登录,会话跟踪技术, 一般过程如下: 用户向服务器发送用户名和密码。 验证服务器后,相关数据(如用户名…

SpringBoot自定义动态定时任务(三十五)

二八佳人体似酥,腰间仗剑斩愚夫。虽然不见人头落,暗里教君骨髓枯。 上一章简单介绍了SpringBoot整合Quartz实现动态定时任务(三十四) ,如果没有看过,请观看上一章 通过 Quartz 实现了动态定时任务,还需要引入 Quartz 组件, 能不…

腾讯前端二面高频手写面试题总结

实现LRU淘汰算法 LRU 缓存算法是一个非常经典的算法,在很多面试中经常问道,不仅仅包括前端面试 LRU 英文全称是 Least Recently Used,英译过来就是” 最近最少使用 “的意思。LRU 是一种常用的页面置换算法,选择最近最久未使用的…

降本提效 | AIRIOT设备运维管理解决方案

传统运维多是使用在本地化系统,以人工运维和独立系统执行运维工作,重点关注的是设施运行,存在以下几个问题: 1、信息孤岛:本地化系统的接口不同,功能单一独立,各个系统之间的数据无法对接、交互…

了解枚举。

在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常(但不总是)重叠。 [1] 是一个被命名的整型常数的集合,枚举在日常生活中很常见&#xff0…

xxx.OpenResty+Lua后续补充

OpenRestyLua后续补充-请求参数处理看上图,鼠标右键-在新标签中打开图片食用 这是对xxx.nginx转发OpenResty(nginx升级版)_web服务器lua_tgbyhn31的博客-CSDN博客 的一个补充,用于nginx处理请求参数。 附代码: nginx 配置 #user nobody; w…