微服务本身就是一种架构风格,也是指导组织构建软件的最佳实践的集合。但是,业务团队对应用进行拆分后,会产生更细粒度的服务,并面临这些服务在分布式网络环境下的复杂性。如何专注于实现业务逻辑而不被微服务架构的技术细节所困扰,是开发者面临的一大难题。本章将介绍脚手架的概念,并介绍微服务脚手架项目:SpringBoot,其在JVM环境下的技术成熟度、架构完整性、生态活跃度等方面均具有优势。脚手架介绍什么是脚手架脚手架是施工现场使用的辅助工具,或者说是为保证各项施工过程顺利进行而搭建的工作平台。感兴趣的读者可以自行查看维基百科上的定义。对应软件工程领域,脚手架可以理解为在开发过程中帮助开发者使用的开发工具和开发框架。使用脚手架,您无需从头开始构建或编写底层软件。下面对“脚手架”的定义来自于StackOverflow,它更偏向于应用服务框架所使用的一种编程思想或编程范式(供参考)。脚手架:这是一种元编程的方法。程序员编写一个规范(Specification)来描述如何使用数据库,然后编译器脚手架根据规范生成相应的代码进行增删改查。、查询等数据库操作,在脚手架上更高效地构建强大的应用。为什么需要脚手架?为什么软件开发需要脚手架?下面我们通过软件开发的一些基本原则,来看看脚手架在软件工程中的重要作用。●重用原则:现在我们提倡极致的编程体验,开发时间的缩短,大量的开发任务,支持需求的变化,高频次的应用服务交付,这些都给软件开发者带来了前所未有的压力。其中,软件重用技术被公认为解决这些问题的有效方法。从计算机软件程序设计的发展历史来看,从面向过程的程序设计语言到面向对象的高级程序设计语言的广泛使用是软件重用技术进步的体现。从对象的复用到更大的组件的复用,再到今天的框架和服务的复用,都是在利用别人的优秀成果来放大自己的工作价值。当新手使用脚手架时,可以将现成的解决方案扩展到特定问题。使用脚手架的应用程序可以通过简单的注释和配置具有基本的服务功能,例如健康状态检查、生产环境准备和可观察性。对于一个业务逻辑问题,可以复用已有逻辑,一步步迭代,敏捷开发。●DRY原则(Don'tRepeatYourself):DRY原则直译为“不要重复自己”。这个原则类似于复用原则,强调尽可能减少项目中重复的代码行、重复的方法、重复的模块。事实上,软件设计原则和模式最本质的思想就是“消除重复”。我们常说的可重用性和可维护性,其实都是基于减少重复这一简单但重要的思想。DRY原则意味着系统中的每个组件都应该是唯一的并且具有明确的含义(没有歧义)。我们可以通过职责单一、接口隔离等原则,尽可能拆分系统、模块、类和方法,使每个组件职责明确,可以复用。●开闭原则:开闭原则中的“开”是指功能的扩展是开放的,“闭”是指对原有代码的修改是封闭的。通俗地说,一个软件系统通常是由各种模块组成的。向软件系统添加新功能时,应在不修改现有代码的情况下运行。实现开闭原则的关键是“抽象”。从微观上看,开闭原则适用于业务模型类的设计,将系统中所有可能的行为抽象到一个抽象底层,并在这个抽象底层中具体说明需求。提供的方法接口,以及具体的实现类可以通过集成、代理、委托等方式扩展实现新的行为或新的功能。从宏观上讲,我们说开放和封闭的原则是将公共模块、开发约定、最佳技术实践共享和提炼成一个封闭的底层技术库;并通过继承、组合、集成的方式,将频繁变化的业务模块和独特的功能逻辑整合起来,实现对扩展的开放。不要重新发明轮子(StopReinventingTheWheel),这个原则可以说是软件开发中的“黄金法则”。在实际的软件工程场景中,使用脚手架正是为了让我们避免重新发明轮子。如果不使用现有的框架或工具,不仅不会提高开发效率,还会有重新发明轮子的风险。这里举一个我参与的实际项目中发生的血案,在一个服务治理项目中,我们需要在数据持久层实现一个通用的数据存储访问组件。初衷是为了降低应用访问不同数据存储引擎的复杂度,屏蔽用户对不同持久层的感知差异,让开发者通过简单的配置就可以适配不同的数据类型。另外,因为我们期望完全掌控持久层,实现深度定制的数据转换功能,所以没有使用Spring框架,而是走上了自研持久层的道路。如下图所示为自研持久层的UML框架图。我们分别对接了MySQL、MongoDB、OpenTSDB、HBase等数据源。系统从架构设计到实现大约用了两个月的时间,这还不包括至少一个月的后期测试、对接、调试和bug修复的磨合期。但由于人员、经验、项目周期等多种因素,自研的持久层框架效果没有达到预期,在后期与业务对接过程中也出现了各种技术和业务适配问题。经过一番技术研究,我们决定逐步使用SpringData来替代原来自研的持久层框架。经过项目实践,我们发现SpringData在业务需求满足度、易用性、开发效率、业务稳定性等方面具有压倒性的优势。不仅可以充分满足业务和技术要求,而且可以简化我们的开发工作,显着提高工作效率。两者的对比如下表所示。SpringData项目让我们可以更方便地通过使用对象的语义来操作不同类型的数据。它通过“抽象”提取出应用程序的骨架部分,形成一套系统的开发范式和行为模式。SpringBoot脚手架还为自定义的复杂查询和修改操作提供了扩展的Repository类和自动化配置,使得添加自定义的扩展方法更加简单方便。我们只需要了解Spring提供的操作API接口就可以实现复杂查询等业务逻辑。SpringData进一步封装了我们的数据持久层框架,开发者可以通过简单的注解实现将不同类型的数据放到不同的持久层集合中的存储映射操作。可以说,脚手架项目可以为开发者屏蔽数据存储引擎复杂的底层差异和具体的工作细节,提高开发效率,降低开发难度。除非你是这方面的专家,或者没有现成的软件脚手架可以满足你的需求,否则请停止“愚蠢地重新发明轮子”。这里有一份SpringBoot基础实战教程:https://github.com/javastacks...常用脚手架下面列举一些软件开发中经常用到的脚手架,看看如何通过脚手架来提高我们的开发效率。Vue框架对于前端开发者来说,Vue无疑是一套简单易用的前端脚手架,用于构建用户界面。根据Vue的官方网站,Vue是一个用于构建用户界面的渐进式JavaScript框架。与其他重量级框架不同,Vue采用了自下而上的增量开发设计。Vue的目标是通过最简单的API实现响应式数据绑定和组合视图组件。vue-cli脚手架工具可以用来快速构建大型单页应用。该工具提供了构建工具的“开箱即用”配置,带来了现代前端开发流程。通过热重载、静态检查保存和生产就绪的构建配置,只需几分钟即可创建和启动项目:要基于Webpack模板创建项目,首先我们选择目录,然后在命令上lineput将目录更改为选择的目录即可,使用如下命令即可:MavenMaven是一个跨平台的项目管理工具,服务于Java平台,用于项目构建、依赖管理、项目信息管理。同时,使用Maven可以规范项目骨架和包层次结构、命名配置文件、生成代码原型等。Maven提供了archetype插件,帮助开发者快速勾勒出项目骨架。使用本地Maven仓库中的脚手架新建项目,直接执行如下Maven命令,根据提示依次输入groupId、版本、包信息:Maven自动化构建,简化开发者手动构建项目的过程规范项目建设流程。Maven自动化构建流程如下图所示。NettyNetty是JBoss提供的一个Java开源框架。Netty提供了一个异步的、事件驱动的网络应用框架和工具,用于快速开发高性能、高可用性的网络服务器和客户端程序。当Java世界没有Netty框架时,Java自带的NIO非常复杂,会出现EpollBug(代码缺陷),会触发Selector空轮询,导致CPU占用100%。Netty的解决方案是在N个空轮询后自动关闭Selector,避免了原生NIO的空轮询问题。而Netty有很好的线程模型和内存管理框架,如下图是NettyReactor的工作架构图。JavaEEJavaEE的全称是Java2PlatformEnterpriseEdition,是在SUN的领导下,由多家公司联合制定的企业级分布式应用开发规范。JavaEE技术由一系列技术规范和技术组件组成,包括RESTfulWebServer(JAX-RS)、JerseyRest框架、JavaServlet、JMS、EJB等。通常,满足这些标准的业务应用程序可以部署运行在Tomcat和JBoss等Web服务器上。DropwizardDropwizard允许您的类通过简单的配置提供RESTful服务。Dropwizard是一个微服务框架,是各种技术的集成包。它包括以下组件:●嵌入式Jetty:应用程序被打包成一个jar文件并使用它自己的嵌入式Jetty容器。除此之外,没有任何其他war文件和外部Servlet容器。●JAX-RS:Jersey,用于编写基于REST的Web服务。●JSON:REST服务数据传输和处理全部使用JSON,使用Jackson库。●日志:使用Logback和SLF4。●数据库:使用Hibernate集成ORM框架。●Indicators:使用Metrics作为指标衡量工具,在Java代码中嵌入Metrics代码,方便监控业务代码的各项指标。同时,Metrics可以和Ganlia、Graphite很好的结合,方便的提供图形界面。在微服务架构领域,Dropwizard可以说是早期脚手架的代表。然而,SpringBoot比蓝色更好。在Spring强大成熟的技术生态下,SpringBoot的特性更加优雅,更符合当下的微服务。建筑理念。来源:https://www.toutiao.com/a7004...近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4.不要用爆破爆满画面,试试装饰者模式,这才是优雅的方式!!5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
