Spring Cloud 微服务开发指南
spring cloud

Spring Cloud 微服务开发指南

如同 Spring Boot 在 Java Web 开发领域中的统治地位,Spring Cloud 在 Java 微服务开发领域中同样处于垄断地位。软件系统从单体升级到微服务架构,随之会出现各种分布式系统所特有的问题,包括服务注册与发现、认证和授权、限流熔断、调用追踪等。Spring Cloud 提供了各种组件来解决这些问题,本文将通过升级改造一个单体 API 服务为微服务架构来讲解部分核心组件的用法。

  • 天火
    天火
Spring Boot API 服务测试指南
spring boot

Spring Boot API 服务测试指南

Spring Boot 除了简化了 Spring 应用的开发,同时也简化了 Spring 应用的测试。它内置支持各种常用测试工具,包括 Spring Test、JUnit、TestNG、Mockito、AssertJ 等。本文将讲解如何编写单元测试和集成测试来保障 Spring Boot API 应用不同层级代码的质量,其中会涉及到使用嵌入式的 H2 数据库来测试 Repository,通过 Mock 依赖接口来对用例进行单元测试,以及对应用整体进行 API 集成测试。

  • 天火
    天火
Spring Boot API 服务开发指南
spring boot

Spring Boot API 服务开发指南

Spring Boot 大大简化了使用 Spring 框架开发 Web 应用时的配置工作,使用它只需添加相关依赖包,即可通过零配置或少量配置来运行一个 Web 应用。本文将使用 Spring Boot 来开发一个 API 服务,同时支持 REST 和 GraphQL 两种协议。其中会使用 Querydsl 来替换 JPQL 以便以类型安全的方式动态构建 SQL,配置 Spring Security 以支持 REST API 认证和授权,使用切面(Aspect)来保障 GraphQL API 的安全性,以及使用干净架构来保障业务代码的可复用性和可测试性。

  • 天火
    天火
干净架构最佳实践
干净架构

干净架构最佳实践

干净架构(The Clean Architecture)是 Bob 大叔在 2012 年提出的一种适用于复杂业务系统的软件架构方式。干净架构的理念非常精炼,其中最核心的就是向内依赖原则。由于其并没有规定实施细节,因此采用不同语言和框架的软件系统都可以采用这种架构方式。这带来了很大的灵活性,但同时也增加了开发人员的实践难度。本文以一个 Java 语言(Spring Boot 框架)开发的 API 服务,以及一个 Dart 语言(Flutter 框架)开发的移动应用为例,来阐述干净架构的具体实施,期望对大家理解干净架构有所帮助。

  • 天火
    天火
使用 IoC 容器来简化业务对象的管理
控制反转

使用 IoC 容器来简化业务对象的管理

有过复杂业务应用编写经验的开发人员都知道业务对象的创建是一件比较麻烦的事儿。这些应用中存在着大量的业务对象,它们之间有着复杂的依赖关系,导致模块之间很容易出现循环依赖。此外,有些对象还有单例要求,依赖之间还有顺序要求,这些更加重了问题的严重性。这种情况下就需要有一种手段来简化业务对象的管理,包括创建和获取,IoC(Inversion of Control)容器正是为此而生。IoC 容器要求被管理的对象支持依赖注入(Dependency Injection),以便给这些对象注入其依赖的对象。本文先对控制反转和依赖注入的概念作简单介绍,然后重点讲解它们在各种语言里的实际用法。

  • 天火
    天火
叽歪课程 - NextJS + AntD React 应用开发实战
叽歪课程

叽歪课程 - NextJS + AntD React 应用开发实战

NextJS 是一个 React 应用框架,无需做任何配置就可让你的应用获得服务端渲染、自动代码分割、客户端路由、代码热加载等特性。AntD 是蚂蚁金服开源的一个 React 组件库,提供了数十个功能强大而灵活的组件。NextJS + AntD,让你十分钟之内可以开始编写你的第一行业务代码,几天时间就能开发完成一个简单的网站。

  • 天火
    天火
叽歪课程 - Flutter 移动应用开发实战
叽歪课程

叽歪课程 - Flutter 移动应用开发实战

Flutter 是新一代的跨平台 UI 框架,由 Google 出品。不同于 React Native 这类采用 Hybrid 架构的框架,Flutter 的架构升级是革命性的。Flutter 从渲染引擎往上都由自己实现,因此可控性更强,跨平台的适应性也更好,在性能上更是媲美于原生应用。除了跨移动平台,Flutter 还计划跨桌面和 Web 平台,发展前景良好,值得投入时间和精力去学习。

  • 天火
    天火
云原生监控系统 Prometheus 入门
prometheus

云原生监控系统 Prometheus 入门

Prometheus 是一个开源监控系统,它前身是 SoundCloud 的告警工具包。从 2012 年开始,许多公司和组织开始使用 Prometheus。该项目的开发人员和用户社区非常活跃,越来越多的开发人员和用户参与到该项目中。目前它是一个独立的开源项目,且不依赖于任何公司。为了强调这点和明确该项目治理结构,Prometheus 在 2016 年继Kurberntes 之后,加入了 云原生计算基金会(Cloud Native Computing Foundation)。 Prometheus 介绍 主要特性 之所以

  • 天火
    天火
Netty 高性能网络协议服务器开发
netty

Netty 高性能网络协议服务器开发

本文通过一个实例来讲解如何使用 Netty 框架来开发网络协议服务器,项目使用 Gradle 工具来构建和运行,并且支持 Docker 部署。项目代码已在 GitHub 开源,JW Netty Demo。 Netty 简介 Netty 是一个异步、事件驱动的网络应用框架,使用它可以快速开发出可维护良好的、高性能的网络协议服务器。它大幅简化和流程化了网络编程,比如 TCP 和 UDP 套接字服务器开发。难能可贵的是,在保证快速和易用性的同时,

  • 天火
    天火
Tornado API 服务开发
tornado

Tornado API 服务开发

本文讲述如何使用 Tornado Web 框架来开发一个简单的 API 服务,以及如何使用 Docker 工具来构建镜像和部署服务。项目代码已在 GitHub 开源,JW Tornado Demo。 Tornado 介绍 Tornado 是一个 Python Web 框架,同时也是一个异步网络库。通过使用非阻塞网络 IO,它可以轻松处理上万连接,这使得它非常适合长轮询、WebSockets,以及需要为每一个用户维护一个连接的应用。 Tornado

  • 天火
    天火
Git + Docker 多环境自动化部署
devops

Git + Docker 多环境自动化部署

日常项目开发过程中,一般都有多套环境,比如开发、测试和生产。各个环境部署的代码版本不一致,手动一个个来部署效率低且容易出错。如果项目采用了敏捷开发方式,可能每天需要部署几十次。手动方式更加不可行,因此必须要把多环境的部署工作自动化。本文将介绍在笔者参与项目中实际推行的一种方案,供大家参考。 整体方案 当开发人员 push 代码到 develop、release 和 master 分支时将自动触发构建 Docker 镜像,然后部署到分支对应的开发环境。 Git 分支模型 每套环境部署的代码版本都不一样,还在开发中的功能只能部署到开发环境,已经开发完成的功能可以部署到测试环境,测试通过的功能才能部署到生产环境。

  • 天火
    天火