项目工程化专题
从零搭建后台技术栈,让你提升一个层次 |
---|
GitLab CI/CD 预定义环境变量说明 | Gitlab 备份 | Centos7 安装 Gitlab Runner |
---|
Web前端工程化 | 前端工程化学习笔记 | 工程化 |
---|
前端工程化指南 | 前端工程化从入门到进阶 付费 |
---|
- 套路拆解:大厂是如何保证代码质量的!
- 如何提高工作效率?如何写出高质量的代码?如何成长
- 大,小公司程序员的工作差别到底在哪
- 大厂程序员是如何做敏捷开发的?大公司程序员编程开发流程|大公司是如何快速响应用户需求并实现产品的持续交付
- 项目研发流程规范
-
脚手架
-
构建
-
本地开发服务器
- 动态构建
- Mock 服务
-
持续集成流程
-
4.1. 静态代码检查(linting)
- 4.1.1. ESLint:静态代码检查工具
-
4.2. 测试(testing)
-
4.2.1. 单元测试(unit testing)
-
4.2.2. 功能测试(feature testing)
功能测试必须在真正浏览器做,现在有四种方法。 * 4.2.2.1. 使用本机安装的浏览器 * 4.2.2.2. 使用 Selenium Driver * 4.2.2.3. 使用 Headless Chrome * 4.2.2.4. 使用 Electron,使用 Electron 模拟真实浏览器环境 提供大量人性化、易用的 API 官网:nightmarejs.org
-
4.2.3. 集成测试(integration testing)
-
4.2.4. 端对端测试 (End-to-End testing)
-
4.2.5. Mocha 测试框架
-
4.2.6. 移动平台的自动化测试 目前,最常见的方案是使用 Appium。
1. 基于 WebDriver 2. 采用 客户端/服务器架构 3. 可以在模拟器运行,也可以在真机运行
-
4.3. 合并进入主干(merging)
-
4.4. 自动构建(building)
代码合并进主干以后,就可以进行自动构建和发布了。网上有很多 PaaS 平台,提供持续集成服务。 Travis CI 就是其中最著名的一个,它可以根据你提供的脚本,自动完成构建和发布
-
4.5. 自动发布(publishing)
-
-
部署
可以使用各种不同的技术来实现可扩展的API网关。在JVM上,您可以使用基于NIO的框架之一,例如Netty,Vertx,Spring Reactor或JBoss Undertow。一个 流行的非JVM选项是Node.js,它是一个建立在Chrome的JavaScript引擎上的平台。另一个选择是使用NGINX Plus。 NGINX Plus提供成熟,可扩展,高性能的 Web服务器和反向代理,易于部署,配置和编程。 NGINX Plus可以管理身份验证,访问控制,负载均衡请求,缓存响应,并提供应用感知的健康检查和监控。
使用传统的异步回调方法编写API组合代码很快会将您的回调带入地狱。代码会纠缠不清,难以理解,容易出错。一个更好的方法是使用反应性方法以声明式编写API网关代码。反应抽象的例子包括未来的Scala,Java 8中的CompletableFuture和JavaScript中的Promise。还有Reactive Extensions(也称为Rx或ReactiveX),最初由Microsoft为.NET平台开发。 Netflix为JVM创建了RxJava,专门用于其API网关。还有用于JavaScript的RxJS,它们都在浏览器和Node.js中运行。使用反应式方法将使您能够编写简单而有效的API网关代码。
基于微服务的应用程序是一个分布式的系统,它必须使用进程间通信机制。有两种进程间通信的风格。一种选择是使用基于消息传递的异步机制。一些实现使用诸如JMS或AMQP的消息代理。其他的诸如Zeromq,是无Broker化的服务间的直接通信。进程间通信的另一种风格是HTTP或Thrift之类的同步机制。系统通常将使用异步和同步模式。它甚至可以使用每个样式的多个实现。因此,API网关将需要支持各种通信机制。
API网关需要知道与其通信的每个微服务的位置(IP地址和端口)。在传统的应用程序中,您可能会将这些位置硬编码,但在现代的基于云的微服务应用程序中,这是一个非常重要的问题。基础设施服务(例如消息代理)通常将具有静态位置,可以通过OS环境变量来指定。但是,确定应用程序服务的位置并不那么容易。应用服务具有动态分配的位置。此外,由于自动缩放和升级,服务的一组实例会动态地更改。因此,API网关与系统中的任何其他服务客户端一样,需要使用系统的服务发现机制:服务器端发现或客户端发现。稍后的文章将更详细地描述服务发现。现在值得注意的是,如果系统使用客户端发现,则API网关必须能够查询服务注册,服务注册是所有微服务实例及其位置的数据库。
实现API网关时必须解决的另一个问题是部分故障的问题。每当一个服务调用另一个缓慢响应或不可用的服务时,所有分布式系统都会出现此问题。 API网关不应无限期地等待下游服务。但是,如何处理故障取决于特定方案和哪些服务失败。例如,如果推荐服务在产品详细信息方案中无响应,则API网关应将剩余的产品详细信息返回给客户端,因为它们对用户仍然有用。建议可以是空的,也可以由例如硬编码的前十名列表替代。但是,如果产品信息服务无响应,则API网关应向客户端返回错误。
如果可用,API网关还可以返回缓存的数据。例如,由于产品价格变化不大,如果定价服务不可用,API网关可能会返回缓存的定价数据。数据可以由API网关本身缓存或存储在外部缓存中,如Redis或Memcached。通过返回默认数据或缓存数据,API网关确保系统故障不会影响用户体验。
Netflix Hystrix是一个令人难以置信的有用的库,用于编写调用远程服务的代码。 Hystrix对超出指定阈值的请求进行超时限制。它实现了断路器模式,这阻止了客户端不必要地等待无响应的服务。如果服务的错误率超过指定的阈值,Hystrix将跳闸断路器,所有请求将在指定的时间内立即失败。 Hystrix允许您在请求失败时定义回退操作,例如从缓存读取或返回默认值。如果您使用的是JVM,那么您一定要考虑使用Hystrix。而且,如果您运行在非JVM环境中,则应使用等效的库。
总结
对于大多数基于微服务的应用程序,实现一个API网关是有意义的,API网关充当系统的单个入口点。 API网关负责请求路由,组合和协议转换。它为应用程序的每个客户端提供了一个自定义API。 API网关还可以通过返回缓存或默认数据来掩盖后端服务中的故障
- REST与RESTFul API最佳实践
- 一个简单可参考的 API 网关架构设计
- 有赞API网关实践
- 使用API网关构建微服务--实际例子
- 八步部署NGINX Plus API网关
- Building Microservices: Using an API Gateway
- 一个非常适合IT团队的在线API文档、技术文档工具
- 异步 API 的设计
- springboot综合项目练习三定义微服务接口返回规范
- 微服务RESTful 接口设计规范
- 前后端分离购物网站—技术选型
- JavaWeb项目前后端分离
- 使用RAP2和Mock.JS实现Web API接口的数据模拟和测试
- Web API应用架构设计分析
- 从接入层入手,设计高并发的微服务架构?
- 在基于MVC的Web项目中使用Web API和直接连接两种方式混合式接入
- 架构设计(4)--API网关
- 统一接入层方案
- 一个简单可参考的 API 网关架构设计
- 一切皆API的大环境下,如何打造API Everything
- 基于 Spring Boot 的 Web API 项目的安全设计
- 一个完善的 API 流程标准(草图)
- 设计微服务应用层和 Web API
- 使用 Web API 实现微服务应用层
- 企业级API网关的设计
- 微服务架构为何需要搭配API网关
- 微服务与API网关(上): 为什么需要API网关
- 微服务与API 网关(下)- Kong能为我们做什么?
- 百亿流量 API 网关设计与实践
- 为什么需要API网关,如何设计API网关
- 浅谈三种API设计风格RPC、REST、GraphQL
- spring 指南系列 如何更好的设计RESTful API
- Google Cloud 的 API 设计
- web项目前后端开发过程和体会
- 构建SpringMVCRestful前后端分离项目实例
- Docker 对前后端分离项目的部署和运维(详述)
整个过程可以分成以下14个步骤: 1. 2. 开发工具 3. 项目立项 4. 产品设计 5. 需求分析 6. 技术方案评审 7. 接口设计 8. 数据库设计
- 开发
- Web应用代码开发的步骤---一个列子让你弄懂SpringBoot实现后台框架的搭建
- step 1 首先项目搭建---IDEA
- 记住Application文件一定要在根目录底下不然程序会运行不起来的
- step 2 然后开始新建包
- constant :常量包,存放一些常量数据,如定义服务器响应状态码。
- controller: 控制器,存放各种控制器,来提供数据或者返回界面
- entity:实体类包,存放各种与数据库对应的实体类
- mapper:存放各种与数据库映射的类
- modle:封装返回数据json的格式样式
- service:返回数据给控制调用
- step 3 Application:程序的入口
- @SpringBootApplication
- @MapperScan("com.domain.mapper") 这个用来扫描当前项目的实体类的映射
- step 4 POM文件的修改
- step 5 配置application.yml文件
- step 6 创建实体类层(entity)---创建对应每个表的实体类
- step 7 封装一个(通用)json数据格式, 在modle目录中创建一个basemodel,在model目录中的其他的json模板继承他就可以了
- step 8 在modle目录中创建各种model的json数据层
- step 9 开始写我们的Mapper层(操作数据库层)
- step 10 再写我们的Service层(调用Mapper层来完成相应操作)
- step 11 再写Controller层
- step 1 首先项目搭建---IDEA
- 7.1 写完代码自行验证
- 7.2 各种静态检查
- java静态代码分析工具
- Checkstyle
- FindBugs
- P3C---相对于FindBugs等其他工具,阿里巴巴推出的P3C插件对代码缺陷的描述及改进意见十分详细,是开发人员提升代码质量的必备工具
- 代码审查
- java静态代码分析工具
- 7.3 代码复杂度
- 7.4 测试用例
- 7.5 功能测试
- 单元测试
- GIT push 提交代码,触发CI(持续集成)流程,如果不能通过,打回到开发者
- 人工代码审核,如果不能通过,打回到开发者
- 集成测试(CI)/发布(CD)
- Github Actions
- Travis CI
- Jenkis
- 联调
- 构建
- 回滚
- 监控
- 研发库表设计规范
- 编码规范
- 接口规范
- 数据规范
- GIT分支开发模型规范
- 日志规范
- 安全规范
- 测试用例规范
- bugfix规范
- CI/CD系统
- 交付平台
- 工作流平台
- 构建平台(CI/CD)
- Mock系统
- 文档系统
- 代码管理系统
- 发布平台
- 监控平台
- 比较流行的一种就是Gitlab+Jenkins实现方案---不过这种方案占用内存比较大,没有个8G内存,很难流畅运行,而且部署起来也不快
- Drone+Gogs---轻量级CI/DI工具,结合Gogs使用内存占用不到1G,几行脚本就能实现自动化部署
- 确定系统架构
- 收集框架相关的jar包
- 搭建 SSM 框架
- 编写代码
- 编译源代码
- 运行单元测试和集成测试
- 寻找框架依赖的jar包
- 剔除冲突jar包
- 执行静态代码分析、生成分析报告
- 创建发布版本
- 部署到目标环境
- 部署传递过程
- 执行冒烟测试和自动功能测试
- 持续集成
- 持续交付
- 持续部署
- Maven
- 分布式版本控制工具--Git
- 持续集成和持续交付工具---Jenkins
- Sonar
- 基础平台管理工具--SaltStack
- Docker 容器化工具