91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

java微服務(wù)架構(gòu)有哪些

lhl545545 ? 來(lái)源:電子發(fā)燒友網(wǎng) ? 2018-02-09 10:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

本文首先簡(jiǎn)單介紹了微服務(wù)的概念以及使用微服務(wù)所能帶來(lái)的優(yōu)勢(shì),然后結(jié)合實(shí)例介紹了幾個(gè)常見(jiàn)的Java微服務(wù)框架。

微服務(wù)在開(kāi)發(fā)領(lǐng)域的應(yīng)用越來(lái)越廣泛,因?yàn)殚_(kāi)發(fā)人員致力于創(chuàng)建更大、更復(fù)雜的應(yīng)用程序,而這些應(yīng)用程序作為微小服務(wù)的組合能夠更好地得以開(kāi)發(fā)和管理。這些微小的服務(wù)可以組合在一起工作,并實(shí)現(xiàn)更大、應(yīng)用更廣泛的功能?,F(xiàn)在出現(xiàn)了很多的工具來(lái)滿足使用逐段法而不是一次性地設(shè)計(jì)和構(gòu)建應(yīng)用程序的所有需求。今天,我們來(lái)看一下什么是微服務(wù)、使用微服務(wù)的好處,以及幾個(gè)代碼示例。

java微服務(wù)架構(gòu)有哪些

微服務(wù)是什么?

微服務(wù)是一種面向服務(wù)的架構(gòu)風(fēng)格(Java開(kāi)發(fā)人員最重要的技能之一),其中,應(yīng)用程序被構(gòu)建為多個(gè)不同的小型服務(wù)的集合而不是單個(gè)應(yīng)用程序。與單個(gè)程序不同的是,微服務(wù)讓你可以同時(shí)運(yùn)行多個(gè)獨(dú)立的應(yīng)用程序,而這些獨(dú)立的應(yīng)用程序可以使用不同的編碼或編程語(yǔ)言來(lái)創(chuàng)建。龐大而又復(fù)雜的應(yīng)用程序可以由多個(gè)可自行執(zhí)行的簡(jiǎn)單而又獨(dú)立的程序所組成。這些較小的程序組合在一起,可以提供龐大的單程序所具備的所有功能。

微服務(wù)捕獲了你的業(yè)務(wù)場(chǎng)景,回答了“你想要試著解決什么問(wèn)題”這個(gè)問(wèn)題。微服務(wù)的開(kāi)發(fā)團(tuán)隊(duì)的成員數(shù)量比較少,而且可以用任何語(yǔ)言、任何框架進(jìn)行開(kāi)發(fā)。每個(gè)相關(guān)的程序都是獨(dú)立地版本化、執(zhí)行和擴(kuò)展。這些微服務(wù)可以與其他微服務(wù)進(jìn)行交互,并且具有唯一的URL或名字,同時(shí),即使遇到故障,也能始終保持可用性和一致性。

微服務(wù)能帶來(lái)哪些好處?

使用微服務(wù)能帶來(lái)多個(gè)好處,其中有一個(gè)好處是,由于這些較小的應(yīng)用程序無(wú)需使用相同的編程語(yǔ)言,因此,開(kāi)發(fā)人員可以使用他們最熟悉的語(yǔ)言。這有助于開(kāi)發(fā)人員用更低的成本和更少的錯(cuò)誤來(lái)開(kāi)發(fā)程序。靈活性和低成本這兩個(gè)特點(diǎn)也表現(xiàn)在可以將這些較小的程序重用在其他項(xiàng)目中,從而使其更有效率。

幾個(gè)Java微服務(wù)框架的例子

這里有幾個(gè)可用于Java開(kāi)發(fā)的微服務(wù)框架:

Spring Boot:這可能是最好的Java微服務(wù)框架了,它適用于控制反轉(zhuǎn)、面向切面編程等等。

Jersey:這個(gè)開(kāi)源框架支持Java的JAX-RS API,使用起來(lái)非常容易。

Swagger:在為你提供開(kāi)發(fā)門戶網(wǎng)頁(yè)的同時(shí),能幫助你生成API文檔,以允許用戶測(cè)試你的API。

你也可以考慮使用其他一些框架,包括:Dropwizard、Ninja Web框架、Play框架、RestExpress、Restlet、Restx和Spark Framework。

如何使用DropWizard來(lái)創(chuàng)建微服務(wù)

DropWizard將成熟穩(wěn)定的Java庫(kù)集成在一個(gè)輕量級(jí)的包中,你可以在自己的應(yīng)用程序中使用這個(gè)包。它使用了Jetty for HTTP、Jersey for REST和Jackson for JSON,以及Metrics、Guava、Logback、Hibernate Validator、Apache HttpClient、Liquibase、Mustache、Joda Time和Freemarker。

你可以使用Maven來(lái)設(shè)置Dropwizard應(yīng)用程序。怎么做呢?

在你的POM文件中,添加一個(gè)dropwizard.version屬性,值為DropWizard的最新版本。

LATEST VERSION

<--Then list the dropwizard-core library:-->

io.dropwizard

dropwizard-core

${version}

這將為你設(shè)置一個(gè)Maven項(xiàng)目。在這里,你可以創(chuàng)建配置類、應(yīng)用程序類、表現(xiàn)類,資源類或一個(gè)健康檢查,還可以構(gòu)建Fat JARS,然后運(yùn)行應(yīng)用程序。

在此鏈接中可以查看Dropwizard用戶手冊(cè),這個(gè)鏈接是GitHub庫(kù)。

示例代碼:

package com.example.helloworld;

import com.yammer.dropwizard.config.Configuration;

import com.fasterxml.jackson.annotation.JsonProperty;

import org.hibernate.validator.constraints.NotEmpty;

public class HelloWorldConfiguration extends Configuration {

@NotEmpty

@JsonProperty

private String template;

@NotEmpty

@JsonProperty

private String defaultName = “Stranger”;

public String getTemplate() {

return template;

}

public String getDefaultName() {

return defaultName;

}

}

Spring Boot微服務(wù)

Spring Boot讓你可以通過(guò)嵌入式服務(wù)器將它提供的Java應(yīng)用程序與你自己的應(yīng)用程序一起使用。它使用了Tomcat,因此你不必使用其他的Java EE容器。Spring Boot的教程示例可以訪問(wèn)這里。

你可以在這里找到所有的Spring Boot工程,你會(huì)發(fā)現(xiàn)Spring Boot擁有你的應(yīng)用程序所需的所有基礎(chǔ)架構(gòu)。無(wú)論你是在編寫(xiě)安全類、配置類或是大數(shù)據(jù)類的應(yīng)用程序,總能找到對(duì)應(yīng)的Spring Boot工程。

Spring Boot的工程包括:

- Spring IO Platform:用于版本化應(yīng)用程序的企業(yè)級(jí)分發(fā)。

- Spring Framework:用于事務(wù)管理、依賴注入、數(shù)據(jù)訪問(wèn)、消息傳遞和Web應(yīng)用程序。

- Spring Cloud:用于分布式系統(tǒng),用于構(gòu)建或部署你的微服務(wù)。

- Spring Data:用于與數(shù)據(jù)訪問(wèn)相關(guān)的微服務(wù),不管是映射還是歸約,關(guān)系型還是非關(guān)系型。

- Spring Batch:用于高級(jí)別的批量操作。

- Spring Security:用于授權(quán)和認(rèn)證支持。

- Spring REST文檔:用于RESTful服務(wù)文檔化。

- Spring Social:用于連接社交媒體API。

- Spring Mobile:適用于移動(dòng)網(wǎng)絡(luò)應(yīng)用。

示例代碼:

import org.springframework.boot.*;

import org.springframework.boot.autoconfigure.*;

import org.springframework.stereotype.*;

import org.springframework.web.bind.annotation.*;

@RestController

@EnableAutoConfiguration

public class Example {

@RequestMapping(“/”)

String home() {

return “Hello World!”;

}

public static void main(String[] args) throws Exception {

SpringApplication.run(Example.class, args);

}

}

Jersey

Jersey RESTful框架是開(kāi)源的,它基于JAX-RS規(guī)范。Jersey應(yīng)用程序可以擴(kuò)展現(xiàn)有的JAX-RS實(shí)現(xiàn),并通過(guò)添加功能和實(shí)用工具,使得RESTful服務(wù)更為簡(jiǎn)單,客戶端開(kāi)發(fā)變得更加輕松。

Jersey最好的一點(diǎn)是,它的文檔很詳細(xì),有很多例子。它的速度很快,路由也非常簡(jiǎn)單。

關(guān)于如何開(kāi)始使用Jersey的文檔在這里,而更多的文檔可以在這里找到。

你可以嘗試運(yùn)行下面的示例代碼:

package org.glassfish.jersey.examples.helloworld;

import javax.ws.rs.GET;

import javax.ws.rs.Path;

import javax.ws.rs.Produces;

@Path(“helloworld”)

public class HelloWorldResource {

public static final String CLICHED_MESSAGE = “Hello World!”;

@GET

@Produces(“text/plain”)

public String getHello() {

return CLICHED_MESSAGE;

}

}

Jersey可以很容易地與其他庫(kù)一起使用,如Netty或Grizzly,它支持異步連接。它不需要servlet容器。然而,它確實(shí)很粗魯?shù)匾蕾囎⑷雽?shí)現(xiàn)。

Play框架

Play框架可以讓你很方便地使用Scala和Java來(lái)構(gòu)建、創(chuàng)建和部署Web應(yīng)用程序。對(duì)于需要并行處理遠(yuǎn)程調(diào)用的RESTful應(yīng)用程序來(lái)說(shuō),Play框架是理想的選擇。它是模塊化的,支持異步。Play框架的社區(qū)也是所有微服務(wù)框架中最大的社區(qū)之一。

你可以嘗試運(yùn)行下面的示例代碼:

package controllers;

import play.mvc.*;

public class Application extends Controller {

public static void index() {

render();

}

public static void sayHello(String myName) {

render(myName);

}

}

Restlet

Restlet可以幫助開(kāi)發(fā)人員創(chuàng)建遵循RESTful架構(gòu)模式的快速而又可擴(kuò)展的Web API。它具有不錯(cuò)的路由和過(guò)濾功能,可用于Java SE/EE、OSGi、Google AppEngine(Google Compute的一部分)、Android和其他主要的平臺(tái)。

由于它的社區(qū)是封閉的,因此Restlet的學(xué)習(xí)曲線比較陡峭,但是你可以從StackOverflow上獲得幫助。

示例代碼:

package firstSteps;

import org.restlet.resource.Get;

import org.restlet.resource.ServerResource;

/**

* Resource which has only one representation.

*/

public class HelloWorldResource extends ServerResource {

@Get

public String represent() {

return “hello, world”;

}

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    光伏四可裝置軟件系統(tǒng)架構(gòu)微服務(wù)化設(shè)計(jì)與容器化部署方案

    ,某一模塊升級(jí)需整體停機(jī),無(wú)法適配光伏場(chǎng)景對(duì)實(shí)時(shí)性與連續(xù)性的要求;物理機(jī)部署模式則導(dǎo)致環(huán)境一致性差,跨場(chǎng)景遷移成本高。為此,基于微服務(wù)化設(shè)計(jì)與容器化部署的軟件架構(gòu)應(yīng)運(yùn)而生,通過(guò)“功能解耦、彈性部署、高效
    的頭像 發(fā)表于 03-03 15:47 ?141次閱讀

    基于OpenTelemetry的全鏈路追蹤微服務(wù)可觀測(cè)性實(shí)踐

    微服務(wù)拆分到第三年,我們的服務(wù)數(shù)量從最初的5個(gè)膨脹到了47個(gè)。一個(gè)用戶下單請(qǐng)求要經(jīng)過(guò)API Gateway -> 用戶服務(wù) -> 商品服務(wù) -> 庫(kù)存
    的頭像 發(fā)表于 02-26 15:43 ?133次閱讀

    Istio服務(wù)網(wǎng)格的核心原理與部署實(shí)戰(zhàn)

    微服務(wù)拆分之后,服務(wù)間調(diào)用關(guān)系變得復(fù)雜。一個(gè)請(qǐng)求從網(wǎng)關(guān)進(jìn)來(lái),經(jīng)過(guò)認(rèn)證服務(wù)、用戶服務(wù)、訂單服務(wù)、庫(kù)存服務(wù)
    的頭像 發(fā)表于 02-26 09:49 ?165次閱讀

    全液冷服務(wù)器系統(tǒng)架構(gòu)設(shè)計(jì)案例分享

    服務(wù)器的全液冷,一般都需要液冷板覆蓋CPU、內(nèi)存(DIMM)、硬盤(SSD)、電源、IO以及其他SOC的散熱。今天給大家分享一款浪潮的全液冷冷板服務(wù)器的液冷系統(tǒng)架構(gòu)。
    的頭像 發(fā)表于 01-27 15:33 ?440次閱讀
    全液冷<b class='flag-5'>服務(wù)</b>器系統(tǒng)<b class='flag-5'>架構(gòu)</b>設(shè)計(jì)案例分享

    Istio服務(wù)網(wǎng)格生產(chǎn)環(huán)境性能調(diào)優(yōu)的最佳實(shí)踐

    隨著微服務(wù)架構(gòu)的普及,服務(wù)間通信的復(fù)雜度呈指數(shù)級(jí)增長(zhǎng)。傳統(tǒng)的應(yīng)用層負(fù)載均衡和服務(wù)發(fā)現(xiàn)方案已經(jīng)無(wú)法滿足現(xiàn)代云原生應(yīng)用的需求。Istio作為目前最成熟的
    的頭像 發(fā)表于 01-20 15:40 ?204次閱讀

    Java開(kāi)發(fā)者必看:Tomcat、Jetty、WildFly 三大主流應(yīng)用服務(wù)器選型指南(附效率工具Perforce JRebel推薦)

    Java應(yīng)用服務(wù)器怎么選?Tomcat輕量高效,Jetty靈活嵌入,WildFly企業(yè)級(jí)全能。無(wú)論是微服務(wù)還是復(fù)雜系統(tǒng),選對(duì)服務(wù)器事半功倍。文末還有開(kāi)發(fā)神器推薦,助你告別漫長(zhǎng)部署,即刻
    的頭像 發(fā)表于 12-26 11:16 ?367次閱讀
    <b class='flag-5'>Java</b>開(kāi)發(fā)者必看:Tomcat、Jetty、WildFly 三大主流應(yīng)用<b class='flag-5'>服務(wù)</b>器選型指南(附效率工具Perforce JRebel推薦)

    華納云VPS容器服務(wù)網(wǎng)格流量管理:實(shí)現(xiàn)微服務(wù)高效路由

    在云計(jì)算和微服務(wù)架構(gòu)日益普及的今天,華納云香港VPS憑借其優(yōu)越的地緣優(yōu)勢(shì)和網(wǎng)絡(luò)自由,成為眾多企業(yè)部署容器化應(yīng)用的熱門選擇。復(fù)雜的微服務(wù)架構(gòu)帶來(lái)了流量管理的巨大挑戰(zhàn)。本文將深入探討如何利
    的頭像 發(fā)表于 10-16 17:09 ?527次閱讀

    基于RFID與微服務(wù)架構(gòu)的智能倉(cāng)庫(kù)管理系統(tǒng):實(shí)現(xiàn)倉(cāng)儲(chǔ)數(shù)據(jù)的全鏈路精準(zhǔn)采集與管控

    針對(duì)傳統(tǒng)倉(cāng)儲(chǔ)管理中普遍存在的賬實(shí)不符、流程效率低下及信息孤島等問(wèn)題,本文介紹一套基于RFID射頻識(shí)別技術(shù)與微服務(wù)軟件架構(gòu)的智能倉(cāng)庫(kù)管理系統(tǒng)。系統(tǒng)通過(guò)“一物一碼”的電子身份標(biāo)識(shí),實(shí)現(xiàn)了對(duì)物資從入庫(kù)
    的頭像 發(fā)表于 10-13 11:18 ?763次閱讀
    基于RFID與<b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>的智能倉(cāng)庫(kù)管理系統(tǒng):實(shí)現(xiàn)倉(cāng)儲(chǔ)數(shù)據(jù)的全鏈路精準(zhǔn)采集與管控

    如何基于Nginx構(gòu)建微服務(wù)網(wǎng)關(guān)

    今天,我將分享我們團(tuán)隊(duì)如何基于Nginx構(gòu)建了一個(gè)日均處理10億+請(qǐng)求的微服務(wù)網(wǎng)關(guān),以及踩過(guò)的那些坑。這套方案已經(jīng)穩(wěn)定運(yùn)行2年+,經(jīng)歷過(guò)多次大促考驗(yàn)。
    的頭像 發(fā)表于 09-02 16:29 ?820次閱讀

    Jtti海外VPS微服務(wù)架構(gòu)下的日志采集與分析優(yōu)化方案

    隨著跨境業(yè)務(wù)和分布式應(yīng)用的普及,越來(lái)越多的企業(yè)在海外VPS上構(gòu)建微服務(wù)架構(gòu),以提升系統(tǒng)擴(kuò)展性和靈活性。然而,微服務(wù)化帶來(lái)了一個(gè)新的挑戰(zhàn):日志數(shù)據(jù)分散在多個(gè)服務(wù)和節(jié)點(diǎn)中,若缺乏統(tǒng)一采集與
    的頭像 發(fā)表于 08-27 17:13 ?567次閱讀

    深入剖析RabbitMQ高可用架構(gòu)設(shè)計(jì)

    微服務(wù)架構(gòu)中,消息隊(duì)列故障導(dǎo)致的系統(tǒng)不可用率高達(dá)27%!如何構(gòu)建一個(gè)真正可靠的消息中間件架構(gòu)?本文將深入剖析RabbitMQ高可用設(shè)計(jì)的核心要點(diǎn)。
    的頭像 發(fā)表于 08-18 11:19 ?953次閱讀

    電商API的微服務(wù)架構(gòu)優(yōu)化策略

    ? 隨著電子商務(wù)的快速發(fā)展,API(應(yīng)用程序編程接口)已成為電商平臺(tái)的核心組件,負(fù)責(zé)連接用戶、商家和后臺(tái)系統(tǒng)。微服務(wù)架構(gòu)通過(guò)將應(yīng)用拆分為獨(dú)立、可擴(kuò)展的服務(wù)單元,顯著提升了系統(tǒng)的靈活性和可維護(hù)性。然而
    的頭像 發(fā)表于 07-23 14:30 ?620次閱讀
    電商API的<b class='flag-5'>微服務(wù)</b><b class='flag-5'>架構(gòu)</b>優(yōu)化策略

    蔡司“微服務(wù)”——全能在線售后管家,24小時(shí)守護(hù)您的設(shè)備!

    還在為設(shè)備故障煩惱? 急需技術(shù)支援卻找不到人? 想快速獲取用戶手冊(cè)或軟件升級(jí)? 現(xiàn)在 只需微信掃一掃設(shè)備上的藍(lán)色標(biāo)簽二維碼 蔡司“微服務(wù)”一鍵觸達(dá)! 9大功能板塊 全方位解決您的售后需求 服務(wù)更高
    發(fā)表于 07-10 16:44 ?1566次閱讀
    蔡司“<b class='flag-5'>微服務(wù)</b>”——全能在線售后管家,24小時(shí)守護(hù)您的設(shè)備!

    Tomcat服務(wù)器使用指南

    Tomcat是由Java編寫(xiě)的一個(gè)開(kāi)源的、輕量級(jí)的應(yīng)用服務(wù)器,是Apache軟件基金會(huì)的一個(gè)項(xiàng)目。它實(shí)現(xiàn)了Java Servlet、JavaServer Pages(JSP)和Java
    的頭像 發(fā)表于 06-09 16:26 ?1451次閱讀

    企業(yè)使用NVIDIA NeMo微服務(wù)構(gòu)建AI智能體平臺(tái)

    已發(fā)布的 NeMo 微服務(wù)可與合作伙伴平臺(tái)集成,作為創(chuàng)建 AI 智能體的構(gòu)建模塊,使用商業(yè)智能與強(qiáng)大的邏輯推理模型 (包括 NVIDIA Llama Nemotron) 處理更多任務(wù)。
    的頭像 發(fā)表于 04-27 15:05 ?1280次閱讀