简述企业网站建设的目的做的最好的微电影网站有哪些
web/
2025/9/28 0:58:22/
文章来源:
简述企业网站建设的目的,做的最好的微电影网站有哪些,wordpress采集同步,网站一个页面多少钱目录 前言阅读对象阅读导航前置知识笔记正文一、单体服务介绍二、服务拆分三、分布式微服务升级前的思考3.1 关于SpringBoot/SpringCloud的思考【有点门槛】 四、SpringCloud升级整合4.1 新建父子项目 学习总结感谢 前言
从本节课开始#xff0c;我将自己手写一个基于SpringC… 目录 前言阅读对象阅读导航前置知识笔记正文一、单体服务介绍二、服务拆分三、分布式微服务升级前的思考3.1 关于SpringBoot/SpringCloud的思考【有点门槛】 四、SpringCloud升级整合4.1 新建父子项目 学习总结感谢 前言
从本节课开始我将自己手写一个基于SpringCloud框架的web服务集群中间会引入常用的微服务中间件。如配置中心、网关、链路追踪、断路器等等。 本节课只是简单地从原有单体项目然后升级成SpringCloud架构。
阅读对象
需要有实际Springboot-web开发经验
阅读导航
系列上一篇文章《【分布式微服务专题】微服务架构演进》 系列下一篇文章《[【分布式微服务专题】【微服务专题】从单体到分布式一、SpringCloud整合Nacos整理中…]》
前置知识
笔记正文
一、单体服务介绍
为了升级演示效果我写了一个简单的SpringBoot单体应用架构如下
然后实现的功能也很简单直接list获取库里面所有的数据。主要如下 1会员管理模块提供一个/user/list接口获取数据库里面所有用户数据 2钱包管理模块提供一个/wallet/list接口获取数据库里面所有钱包数据 3商品管理模块提供一个/product/list接口获取数据库里面所有商品数据
整体代码比较简单就不贴了。我们前面有说过单体服务的缺点和限制这边重申一下 1修改任意代码甚至是application.yml都要重新打包编译部署重启服务 2单体机器存在性能瓶颈 3很多时候不同的服务QPS可能不一样所以水平拓展的时候粒度不够精细 第三点对没有经验的小白可能理解上有点困难。简单说就是在电商系统里面正常来说访问商品模块的人会比访问会员模块的人多。然后服务的性能瓶颈可能往往就是QPS最高的那个模块引起的此时需要水平拓展服务但由于是单体所以每次拓展都是对整个系统的拓展。但最理想的效果应该是只对QPS最高的商品模块拓展 二、服务拆分
服务拆分之后其实就可以理解为这就是所谓的【微服务】概念了。微服务简单说一个 springboot 就是一个 微服务并且这个 springboot 做的事情遵循单一职责。 比如说在这里服务经过拆分之后架构图成为了这样我新拓展了一个【订单服务】虽然上面没贴但是不妨碍理解
甚至经过水平拓展也就是我们说的集群化之后还可能是这样 不过随着服务的拆分有一些衍生问题却又无法避免。如下
如何确定那些服务彼此之间的调用链路 比如上述架构图可能存在会员服务调用订单服务的情况那订单服务有两个服务我怎么知道具体调用的是9081还是9082呢。甚至我的会员服务可能也有多台机器那势必存在笛卡尔积的情况他们之间的链路可能会更为复杂 同一组服务之间甚至所有微服务之间如何共享配置信息配置如何自动刷新 比如说我多个微服务之间使用的是同一个数据库redismq这些配置信息理论上是可以共享的而不必在每一个应用的application.yml文件上都声明 集群有新的服务上线或者下线如何处理 服务注册与发现 微服务如何不暴露细节以一个整体去提供服务 网关 分布式事务等等…有一些我自己也不清楚学习中
三、分布式微服务升级前的思考
3.1 关于SpringBoot/SpringCloud的思考【有点门槛】
不知道你们是否跟我一样有同样的疑问即
什么是SpringBoot如何新建一个SpringBoot项目什么是SpringCloud如何新建一个SpringCloud项目SpringCloudAlibaba和SpringCloud有什么关系
说来属实惭愧我在此之前真的没有很清晰的认知。只记得他们分别是Spring脚手架、微服务脚手架。但是我在做项目升级的时候发现如果我的认知还是停留在这样片面的层次会给我带来些不小的阻碍。
问题1什么是SpringBoot如何新建一个SpringBoot项目 不知道你们是否也一样每次新建SpringBoot项目我都得重新百度一下如何新建或者说使用Idea的Spring Initializer来新建不然对如何从空白项目新建一个SpringBoot没啥概念。经过这两天的学习之后我终于是有点理解了。 简而言之创建一个SpringBoot项目大概有如下三种方式
新建一个继承自spring-boot-starter-parent的项目。如下这里分享一个相关知识点的传送门《理解spring-boot-starter-parent》大家伙学习下 spring-boot-starter-parent主要是为我们使用、构建SpringBoot项目提供了一些默认的配置。包括 定义了Java编译版本为1.8。使用UTF-8格式编码。继承自spring-boot-dependencies这个里边定义了JavaSpring开发常用依赖的版本也正是因为继承了这个依赖所以我们在写依赖时才不需要写版本号预定义了一些Maven执行打包操作的配置自动化的资源过滤。自动化的插件配置。针对application.properties和application.yml的资源过滤包括通过profile定义的不同环境的配置文件例如applicationdev.properties和application-dev.yml。 使用spring-boot-starter-parent作为父项目子项目可以继承父项目的依赖项、插件配置和默认设置从而简化子项目的配置和管理。子项目可以通过在其pom.xml文件中引用父项目来继承这些配置例如通过元素指定父项目的坐标。将相关的模块组织成多模块项目可以提高代码的可维护性、复用性和团队协作效率。同时使用父项目和子项目的结构还可以方便地进行整体构建、测试和部署保证模块之间的一致性和协调性。 新建一个项目在dependencyManagement中添加spring-boot-dependencies的依赖 Spring Boot中的spring-boot-dependencies是一个特殊的依赖项它提供了一组预定义的版本控制用于管理Spring Boot及其相关库的版本。 在Spring Boot项目中spring-boot-dependencies依赖是一个非常重要的依赖项它主要作用是统一管理Spring Boot及其相关库的版本避免版本冲突简化依赖项管理。通过引入spring-boot-dependencies你可以确保所使用的Spring Boot及其相关库的版本始终兼容并能够轻松地升级到新的版本。 具体来说spring-boot-dependencies包含了一个BOMBill of Materials文件这是一个包含了一系列库的清单指定了这些库的版本号。当你在Maven或Gradle构建工具中添加spring-boot-dependencies依赖时它会自动引入这个BOM文件。你可以直接声明其他Spring Boot相关的依赖项并且这些依赖项会自动采用BOM中指定的版本。例如你可以声明spring-boot-starter-web依赖并且该依赖会自动使用BOM中定义的Spring Boot版本。 使用spring-boot-dependencies可以带来很多好处。首先它可以统一管理所有的Spring Boot相关库的版本避免不同库之间的版本冲突。其次它可以简化依赖项的管理不需要在每个项目中手动指定每个库的版本号。最后它可以确保所使用的库的版本兼容性和一致性避免因版本不同导致的问题。 总之spring-boot-dependencies是Spring Boot框架提供的一个版本控制机制它可以简化和统一项目中所使用的库的版本管理确保版本的兼容性和一致性。 新建一个空白项目在dependency中添加SpringBoot的依赖 其实就是没有使用上面1/2说的这两个做法咯。在这种情况下需要我们自行去管理、确定依赖包的版本容易出现兼容性问题。 通常我们通过Spring Initializer或者Ali在线云原生构建也好生成出来的SpringBoot都是采用方案1、2。
不知道大家有没有用心看我上面的介绍我这边最后再结合自己的理解简单的总结一下
我们通常新建一个SpringBoot项目的时候之所以在pom中继承自spring-boot-starter-parent主要是为了简化配置。这些简化配置包括默认的JDK版本、默认的项目编码格式UTF-8、自动化的资源配置、插件配置。最重要的是spring-boot-starter-parent继承自spring-boot-dependencies而在spring-boot-dependencies中定义了一系列Spring开发中常用的jar包依赖根据我的发现在里面主要是包含了国外知名厂商的jar包比如org.apache的东西因为在spring-boot-dependencies里面预包含了很多jar包依赖所以我们在实际使用中很多jar包的引用不需要再显式地指定version。如下
问题2什么是SpringCloud如何新建一个SpringCloud项目 我感觉在想通了问题1之后对于这个问题我就没多少疑惑了。盲猜SpringCloud就是提供了很多关于微服务开发常用的中间件jar包依赖。根据我的理解也确实是这样
问题3SpringCloudAlibaba和SpringCloud有什么关系 下面是我在【文心一言】看到的答案 Spring Cloud Alibaba是Spring Cloud的子项目符合Spring Cloud标准。它是一套完整的分布式解决方案旨在推广阿里的产品。如果使用了Spring Cloud Alibaba最好使用alibaba整个体系产品。 因此Spring Cloud Alibaba和Spring Cloud的关系是前者是后者的一部分符合后者的标准。 但其实我不是很赞同这个说法我觉得多少有点不准确。通过查看spring-cloud-dependencies和spring-cloud-alibaba-dependencies会发现他们只是继承了同一个spring-cloud-dependencies-parent项目而已所以文心一言说Spring Cloud Alibaba是Spring Cloud的子项目符合Spring Cloud标准也没错。不过我个人认为SpringCloud是SpringCloud公司给出的一个通用分布式微服务技术合集。而Spring Cloud Alibaba则是阿里给的一套自己的解决方案里面的微服务中间件都是阿里系的。说不定哪一天你就看到了Spring Cloud Tencent、Spring Cloud ByteDance、Spring Cloud HuaWei
我在后面将使用Spring Cloud Alibaba大家可以通过传送门看看介绍传送门。根据官方介绍我们想要使用Spring Cloud Alibaba只需要在pom中引入下面的依赖
dependencyManagementdependenciesdependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-dependencies/artifactIdversion${alibaba-cloud.version}/versiontypepom/typescopeimport/scope/dependency/dependencies
/dependencyManagement附上一张应该是Alibaba给出的分布式微服务生态图
四、SpringCloud升级整合
4.1 新建父子项目
使用IDEA新建一个父子项目具体过程我就不贴了如果你理解了【三、分布式微服务升级前的思考】的内容最后发现也没那么难。当然有时候需要一点Maven相关知识我这边建议直接花半个小时看看【菜鸟教程Maven系列】个人认为比较需要了解的是Maven构建生命周期、Maven POM 新建出来之后就是一个父子项目咯然后每个项目有自己的SpringBootApplication启动类。 但显然这不是我们想要的结果我们在【二、服务拆分】中提到的问题依然还没有解决。如
服务注册与发现微服务最重要的一个点分布式配置管理服务限流降级链路追踪分布式事务等等
所以接下来才是真正的重头戏啊。后面我会逐步整合下一篇则是整合Nacos配置中心到项目中。
学习总结
理解了SpringBoot跟SpringCloud项目的具体含义对如何新建一个SpringBoot项目有个较为清晰的认知
感谢
感谢简书大佬【作者】的文章《理解spring-boot-starter-parent》
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83053.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!