Micronaut微服務 | 基礎入門

yFlGAx.png

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 ...... 有些人能清楚地聽到自己內心深處的聲音,並以此行事。這些人要麼變成了瘋子,要麼成爲傳奇。——《秋日傳奇》

基本概述

63f1KJ.png

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 提供的主函數名 [2].create-[COMMAND]: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

68raSs.png

版權聲明:本文爲博主原創文章,遵循相關版權協議,如若轉載或者分享請附上原文出處鏈接和鏈接來源。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章