Some people hear their own inner voices with great clearness. And they live by what they hear.Such people become crazy,or they become legends ......
有些人能清楚地听到自己内心深处的声音,并以此行事。这些人要么变成了疯子,要么成为传奇。——《秋日传奇》
基本概述
A modern, JVM-based, full-stack framework for building modular, easily testable microservice and serverless applications. ——by[ https://micronaut.io/]
作为一名程序员,在微服务[MicroService]乱入的世界,听着拥抱云原生[Cloud Native],马踏无服务[Serverless]的论断。或许都会经不住诱惑,会自主在搜索相关的关键词去探究一下这些新鲜以及陌生的字眼。但是实际上,在经过现实的熏陶之后,我们所摆弄的还是最原始的形态。大多数在进入一家企业之后,不由自主的发现,在Spring的生态影响下,现在大部分程序员都活跃在这个框架里。假如跳出这个框架之后,我们是否还能对现在的工作得心应手,恐怕是要打上一个大大的问号的?在一次偶然的机会,知道了Micronaut。于是,开启了对Micronaut的探索之路......
Micronaut is a modern, JVM-based, full stack Java framework designed for building modular, easily testable JVM applications with support for Java, Kotlin, and Groovy.
基于JVM的现代全栈Java框架,旨在通过支持Java,Kotlin和Groovy语言来构建模块化,易于测试的微服务应用程序以及无服务应用程序。
Micronaut is developed by the creators of the Grails framework and takes inspiration from lessons learnt over the years building real-world applications from monoliths to microservices using Spring, Spring Boot and Grails.
Micronaut由Grails框架的创建者开发,并借鉴了多年使用Spring,Spring Boot和Grails构建从单块到微服务的实际应用程序的经验教训。
Micronaut aims to provide all the tools necessary to build JVM applications including:
Dependency Injection and Inversion of Control (IoC)
Aspect Oriented Programming (AOP)
Sensible Defaults and Auto-Configuration
Micronaut旨在提供构建JVM应用程序所需的所有工具,包括:
- 依赖注入和控制反转(IoC)
- 面向方面的编程(AOP)
- 合理的默认设置和自动配置
With Micronaut you can build Message-Driven Applications, Command Line Applications, HTTP Servers and more whilst for Microservices in particular Micronaut also provides:
Distributed Configuration
Service Discovery
HTTP Routing
Client-Side Load Balancing
使用Micronaut,您可以构建消息驱动的应用程序,命令行应用程序,HTTP服务器等,而对于Microservices,Micronaut特别提供以下功能:
- 分布式配置
- 服务发现
- HTTP路由
- 客户端负载平衡
At the same time Micronaut aims to avoid the downsides of frameworks like Spring, Spring Boot and Grails by providing:
Fast startup time
Reduced memory footprint
Minimal use of reflection
Minimal use of proxies
No runtime bytecode generation
Easy Unit Testing
同时,Micronaut旨在通过提供以下内容来避免诸如Spring,Spring Boot和Grails之类的框架的弊端:
- 快速启动时间
- 低内存占用
- 最小粒度使用反射
- 最小粒度使用代理
- 无运行时字节码生成
- 简单的单元测试
Historically, frameworks such as Spring and Grails were not designed to run in scenarios such as serverless functions, Android apps, or low memory footprint microservices. In contrast, Micronaut is designed to be suitable for all of these scenarios.
This goal is achieved through the use of Java’s annotation processors, which are usable on any JVM language that supports them, as well as an HTTP Server and Client built on Netty. To provide a similar programming model to Spring and Grails, these annotation processors precompile the necessary metadata to perform DI, define AOP proxies and configure your application to run in a low-memory environment.
Many APIs in Micronaut are heavily inspired by Spring and Grails. This is by design, and helps bring developers up to speed quickly.
综上所述,Micronaut设计的初衷是面向无服务,低内存占用的微服务等场景而生的。通过使用Java的(可在支持它们的任何JVM语言中使用)以及基于Netty构建的HTTP Server和Client 来实现此目标。提供与Spring和Grails相似的编程模型,利用批注处理器会预编译必要的元数据,以执行DI,定义AOP代理并配置您的应用程序以在低内存环境中运行。
基础配置
1.Micronaut SDK安装
This project implements a project generator for Micronaut as is both a Command Line (CLI) application and an API that can be run as a HTTP server, deployed to a Servlet container or executed on a Serverless platform (Google Cloud Run, Google Cloud Function, AWS Lambda or Azure Function).
目前Micronaut最新的版本为2.3.4。Micronaut创建工程实提供了Micronaut Command Line (CLI) 命令行和 Micronaut API接口2种方式,应用可部署在Servlet container[Web 容器]和Serverless Platform [无服务框架]平台。
SDK安装方式有以下几种:
- Install with SDKman
- Install with Homebrew
- Install with MacPorts
- Install with Chocolatey
- Install through Binary on Windows
- Build & Install from Source
在Unix/Linux环境使用SDKman安装:
[1].sdk update更新
sdk update
[1].sdk install micronaut 安装SDK
sdk install micronaut
在Mac环境使用Homebrew和MacPorts安装:
[1].MacPorts安装:
sudo port install micronaut
[2].Homebrew安装:
brew install --cask micronaut-projects/tap/micronaut
MacPorts的理念是尽量减少对系统现有库的依赖,因此它需要下载许多基础库,然后编译安装到系统中。这样做最大的问题在于下载时间长,编译时间长,最大的好处就是不会破坏系统原有软件包。
[⚠️注意事项]:
1.Mac OSX系统上有许多优秀的包管理软件能够将Linux上常用的命令工具和依赖安装到系统上,主要有Fink、Macports、Homebrew这3个主流包管理软件。
2.MacPorts依赖于BSD的软件包管理工具(port),它的工作方式是从仓库中下载软件包以及其依赖库,然后在本机中编译安装。尽量减少对系统现有库的依赖,因此它需要下载许多基础库,然后编译安装到系统中。这样做最大的问题在于下载时间长,编译时间长,最大的好处就是不会破坏系统原有软件包。
3.Homebrew与MacPorts的工作方式类似,也是从仓库中下载软件包以及其依赖库,然后在本机中编译安装。Homebrew的理念是尽量使用系统中存在的库,且软件包都安装到/usr/local目录里,最大的好处就是下载编译时间短于MacPorts,安装简单,且无需root用户权限来安装。
3.Fink是一个希望把越来越多Unix上软件带到Mac OSX系统上的项目。它通过移植软件源码,然后打包成能在Mac OSX系统上执行的二进制进行分发。Fink依赖于Debian的软件包管理工具(dpkg/dselect/apt-get),因此它将软件包打包成.deb格式。这样做最大的好处就是安装软件是预编译好的,因此无需本机编译。Fink最大的问题在于软件包的更新迭代比较慢,因此要想使用最新版软件包,则需要等待Fink社区更新。
在Windows环境下,使用Chocolatey和Binary二进制文件安装:
[1].Chocolatey安装:
choco install micronaut
[2].Binary二进制安装:设置环境变量[%MICRONAUT_HOME%]
%MICRONAUT_HOME%\bin
除此之外还可以下载源码进行安装:
[1].利用Git克隆源码:
git clone https://github.com/micronaut-projects/micronaut-starter.git
[2].利用gradlew构建:
./gradlew micronaut-cli:assembleDist
[3].配置环境安装:
mkdir ~/.micronaut
unzip starter-cli/build/dist/micronaut-cli-VERSION.zip -d ~/.micronaut
[4].配置环境变量:
export MICRONAUT_HOME=~/path/to/unzipped/cli
export PATH="$PATH:$MICRONAUT_HOME/bin"
[4].配置环境变量生效:
source ~/.bash_profile
[⚠️注意事项]:
[1].源码安装以上方式支持Linux和Unix以及Macos
[2].Windows环境按照对应的配置即可
2.Micronaut SDK使用
一般创建代码使用mn命令:
mn create-[COMMAND] --build=BUILD-TOOL
[1].主函数mn: Micronaut CLI 提供的主函数名
- create-app NAME
- create-cli-app NAME
- create-function-app NAME
- create-grpc-app NAME
- create-messaging-app NAME
[2].--build:构建工具支持:gradle, gradle_kotlin, maven.
例如:
mn create-app pandora-cloud-framework --build maven
版权声明:本文为博主原创文章,遵循相关版权协议,如若转载或者分享请附上原文出处链接和链接来源。