欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中dubbo+zookeeper微服務(wù)架構(gòu)簡介

 更新時間:2021年09月03日 12:14:11   作者:易小順  
Apache Dubbo是一款高性能的 Java RPC 框架,這篇文章主要介紹了Java中dubbo+zookeeper微服務(wù)架構(gòu),需要的朋友可以參考下

1、Apache Dubbo概述

1.1、Dubbo簡介

  **Apache Dubbo **是一款高性能的 Java RPC 框架。其前身是阿里巴巴公司開源的、輕量級的開源 Java RPC 框架,可以和 Spring 框架無縫集成,2018年阿里巴巴把這個框架捐獻給了apache基金,此框架的使用比 Spring Cloud 微服務(wù)的框架使用較為簡單,只需要表寫相應的服務(wù)提供和服務(wù)消費的代碼即可,中央服務(wù)配置可由 ZooKeeper 進行服務(wù)的注冊管理,只需要相應的服務(wù)進行配置注冊,服務(wù)消費進行接口的抓取即可完成服務(wù)的遠程調(diào)用。

  • 什么是RPC? RPC全稱為remote procedure call,即遠程過程調(diào)用。比如兩臺服務(wù)器A和B,A服務(wù)器上部署一個應用,B服務(wù)器上部署一個應用,A服務(wù)器上的應用想調(diào)用B服務(wù)器上的應用提供的方法,由于兩個應用不在一個內(nèi)存空間,不能直接調(diào)用,所以需要通過網(wǎng)絡(luò)來表達調(diào)用的語義和傳達調(diào)用的數(shù)據(jù)。 需要注意的是 RPC 并不是一個具體的技術(shù),而是指整個網(wǎng)絡(luò)遠程調(diào)用過程。
  • RPC是一個泛化的概念,嚴格來說一切遠程過程調(diào)用手段都屬于 RPC范 疇。各種開發(fā)語言都有自己的RPC框架。Java中的RPC框架比較多,廣泛使用的有RMIHessian、Dubbo等。
  • Dubbo官網(wǎng)地址:http://dubbo.apache.org ,詳情可進行直接的訪問查看信息。
  • Dubbo提供了三大核心能力:面向接口的遠程方法調(diào)用,智能容錯和負載均衡,以及服務(wù)自動注冊和發(fā)現(xiàn)。

1.2、Dubbo的服務(wù)架構(gòu)

 Dubbo的服務(wù)架構(gòu)圖如下所示:

在這里插入圖片描述

各節(jié)點角色說明:

節(jié)點名 功能
提供者 暴露接口的提供方
容器 整個服務(wù)運行時的容器
注冊 服務(wù)注冊與發(fā)現(xiàn)的注冊中心
消費者 調(diào)用遠程服務(wù)的消費方
監(jiān)控 統(tǒng)計服務(wù)調(diào)用次數(shù)調(diào)用時間的監(jiān)控中心

服務(wù)的執(zhí)行步驟:

  1. 服務(wù)容器負責啟動,加載,運行服務(wù)的接口提供者。
  2. 服務(wù)提供者在啟動時,向注冊中心注冊自己提供的服務(wù),也就是注冊自己的接口地址。
  3. 服務(wù)消費者在啟動時,向注冊中心訂閱自己所需的服務(wù),通過代理的方式直接定位到需要的接口實現(xiàn)對象,但是需要注意的是消費者必須有該接口才能進行代理。
  4. 注冊中心返回服務(wù)提供者地址列表給消費者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費者。 4
  5. 服務(wù)消費者,從提供者地址列表中,基于軟負載均衡算法,選一臺提供者進行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。
  6. 服務(wù)消費者和提供者,在內(nèi)存中累計調(diào)用次數(shù)和調(diào)用時間,定時每分鐘發(fā)送一次統(tǒng)計數(shù)據(jù)到監(jiān)控中心。

2、服務(wù)注冊中心 Zookeeper

  通過前面的 Dubbo架構(gòu)圖 可以看到,Registry(服務(wù)注冊中心)在整個架構(gòu)中起著至關(guān)重要的作用。Dubbo官方推薦使用 Zookeeper 作為服務(wù)注冊中心,下面詳細講一下 Zookeeper 在服務(wù)器中的安裝以及相應的服務(wù)注冊和拉取配置。

2.1、ZooKeeper介紹

Zookeeper 是 Apache Hadoop 的子項目,是一個樹型的目錄服務(wù),支持變更推送,適合作為 Dubbo 服務(wù)的注冊中心,工業(yè)強度較高,可用于生產(chǎn)環(huán)境,并推薦使用。

在這里插入圖片描述

 流程說明:

  • 服務(wù)提供者(Provider)啟動時: 向 /dubbo/com.test.UserServiceBo/providers 目錄下寫入自己的 URL 地址
  • 服務(wù)消費者(Consumer)啟動時: 訂閱 /dubbo/com.test.UserServiceBo/providers 目錄下的提供者 URL 地址。并向 /dubbo/com.test.UserServiceBo/consumers 目錄下寫入自己的 URL 地址
  • 監(jiān)控中心(Monitor)啟動時: 訂閱 /dubbo/com.test.UserServiceBo 目錄下的所有提供者和消費者 URL 地址

2.2、ZooKeeper安裝

  下載地址:http://archive.apache.org/dist/zookeeper/ 下載完成后 zookeeper-3.4.6.tar.gz的壓縮文 件。

  安裝步驟:

  • 第一步:需要有安裝 JDK 的環(huán)境。
  • 第二步:把 zookeeper 的壓縮包上傳到 linux 系統(tǒng)。
  • 第三步:解壓縮壓縮包 tar -zxvf zookeeper-3.4.6.tar.gz -C /usr 路徑可以隨便定義。
  • 第四步:進入 zookeeper-3.4.6 目錄,創(chuàng)建 data 目錄,用于數(shù)據(jù)的存儲。
  • 第五步:進入 conf 目錄 ,把 zoo_sample.cfg 改名為 zoo.cfg ,用于配置相關(guān)的數(shù)據(jù)信息,也是啟動的配置文件。

2.3、啟動 ZooKeeper

  進入 Zookeeperbin 目錄,執(zhí)行相應的文件即可。

  • 啟動服務(wù)命令: ./zkServer.sh start
  • 停止服務(wù)命令: ./zkServer.sh stop
  • 查看服務(wù)狀態(tài): ./zkServer.sh status
  • 客戶端連接: ./zkCli.sh

3、ZooKeeper快速入門

Dubbo 作為一個RPC框架,其最核心的功能就是要實現(xiàn)跨網(wǎng)絡(luò)的遠程調(diào)用。本小節(jié)就是要創(chuàng)建兩個應用,一個作為服務(wù)的提供方,一個作為服務(wù)的消費方。通過Dubbo來實現(xiàn)服務(wù)消費方遠程調(diào)用服務(wù)提供方的方法。

3.1、服務(wù)提供方

 創(chuàng)建一個簡單的 web 項目作為服務(wù)的提供者(由maven進行管理)。

添加依賴:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.beordie</groupId>
    <artifactId>dubbo-normal</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>5.0.5.RELEASE</spring.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jms</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <!-- dubbo相關(guān) -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.6.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.7</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>
        <dependency>
            <groupId>javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.12.1.GA</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>

配置 web.xml 文件

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    
    <display-name>Archetype Created Web Application</display-name>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

創(chuàng)建服務(wù)接口

package com.beordie.service;

/**
 * @Description
 * @Date 2021/9/2 16:08
 * @Created 30500
 */
public interface ServiceTest {
    public String get(String name);
}

創(chuàng)建服務(wù)實現(xiàn)類

package com.beordie.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.beordie.service.ServiceTest;

/**
 * @Description
 * @Date 2021/9/2 16:09
 * @Created 30500
 */
@Service
public class serviceImpl implements ServiceTest {
    @Override
    public String get(String name) {
        return "你好" + name;
    }
}

注意:服務(wù)實現(xiàn)類上使用的 Service 注解是 Dubbo 提供的,用于對外發(fā)布服務(wù) 。

創(chuàng)建web.xml 中指定的配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd
        http://code.alibabatech.com/schema/dubbo
        http://code.alibabatech.com/schema/dubbo/dubbo.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 當前應用名稱,用于注冊中心計算應用間依賴關(guān)系,注意:消費者和提供者應用名不要一樣 -->
    <dubbo:application name="provider"/>
    <!-- 連接服務(wù)注冊中心zookeeper ip為zookeeper所在服務(wù)器的ip地址-->
    <dubbo:registry address="zookeeper://192.168.55.129:2181"/>
    <!-- 注冊 協(xié)議和port -->
    <dubbo:protocol name="dubbo" port="20881"></dubbo:protocol>
    <!-- 掃描指定包,加入@Service注解的類會被發(fā)布為服務(wù) -->
    <dubbo:annotation package="com.beordie.service.impl" />
</beans>

啟動服務(wù)并在 ZooKeeper 中進行服務(wù)查看

啟動完服務(wù)后通過打開客戶端的命令打開 ZooKeeper 的客戶端,然后通過指令 ls / 可查看到當前目錄下的文件信息,會發(fā)現(xiàn)存在一個 Dubbo 的文件目錄,繼續(xù)對此目錄進行查看即可發(fā)現(xiàn)相應的服務(wù)注冊信息。

| 在這里插入圖片描述

3.2、服務(wù)消費方

 同樣需要創(chuàng)建一個項目來進行服務(wù)的拉取,引入的依賴和提供方的類似,這里就直接復制即可。

配置 web.xml 文件

<!DOCTYPE web-app PUBLIC
        "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 指定加載的配置文件 ,通過參數(shù)contextConfigLocation加載 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext-web.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

創(chuàng)建和提供方一致的服務(wù)接口

可以直接對接口進行復制,因為之后的服務(wù)抓取是通過動態(tài)代理的方式進行對象生成的,因此需要對應的接口對象。

編寫Controlle對外暴露訪問接口

package com.beordie.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.beordie.service.ServiceTest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @Description
 * @Date 2021/9/2 17:05
 * @Created 30500
 */
@Controller
@RequestMapping("/demo")
public class TeController {

    // Dubbo 的遠程對象注入
    @Reference
    private ServiceTest serviceTest;

    @RequestMapping("/hello")
    @ResponseBody
    public String getName(String name){
        //遠程調(diào)用
        String result = serviceTest.get(name);
        System.out.println(result);
        return result;
    }

}

創(chuàng)建對應的啟動配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://code.alibabatech.com/schema/dubbo
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd">
    <!-- 當前應用名稱,用于注冊中心計算應用間依賴關(guān)系,注意:消費者和提供者應用名不要一樣 -->

    <dubbo:application name="dubbo-consumer"/>
    <!-- 連接服務(wù)注冊中心zookeeper ip為zookeeper所在服務(wù)器的ip地址-->
    <dubbo:registry address="zookeeper://192.168.55.129:2181"/>
    <!-- 掃描的方式暴露接口 -->
    <dubbo:annotation package="com.beordie.controller"/>
</beans>

運行測試

設(shè)置完畢后啟動項目,然后訪問相應地址,即可抓取到正確的服務(wù)結(jié)果。

3.3、問題思考

  • 思考一:上面的Dubbo入門案例中我們是將HelloService接口從服務(wù)提供者工程 (dubbo_provider)復制到服務(wù)消費者工程(dubbo_consumer)中,這種做法是否合適?還有沒有更好的方式?
  • :這種做法顯然是不好的,同一個接口被復制了兩份,不利于后期維護。更好的方式是單獨創(chuàng)建一個 maven工程,將此接口創(chuàng)建在這個maven工程中。需要依賴此接口的工程只需要在自己工程的 pom.xml文件中引入maven坐標即可。
  • 思考二:在服務(wù)消費者工程(dubbo_consumer)中只是引用了接口,并沒有提供實現(xiàn)類,Dubbo是如何做到遠程調(diào)用的?
  • :Dubbo底層是基于代理技術(shù)為接口創(chuàng)建代理對象,遠程調(diào)用是通過此代理對象完成的??梢酝ㄟ^開發(fā)工具的debug功能查看此代理對象的內(nèi)部結(jié)構(gòu)。另外,Dubbo實現(xiàn)網(wǎng)絡(luò)傳輸?shù)讓邮腔贜etty框架完成的。
  • 思考三:上面的Dubbo入門案例中我們使用Zookeeper作為服務(wù)注冊中心,服務(wù)提供者需要將自己的服務(wù)信息注冊到Zookeeper,服務(wù)消費者需要從Zookeeper訂閱自己所需要的服務(wù),此時Zookeeper服務(wù)就變得非常重要了,那如何防止Zookeeper單點故障呢?
  • :Zookeeper其實是支持集群模式的,可以配置Zookeeper集群來達到Zookeeper服務(wù)的高可用,防 止出現(xiàn)單點故障。

4、 Dubbo管理控制臺

 我們在開發(fā)時,需要知道 Zookeeper 注冊中心都注冊了哪些服務(wù),有哪些消費者來消費這些服務(wù)。我們可以通過部署一個管理中心來實現(xiàn)。其實管理中心就是一個web應用,部署到tomcat即可。

4.1、安裝

 只需要下載對應的 war 到本地的tomcat,然后啟動服務(wù)即可。

需要修改WEB-INF下的dubbo.properties文件,注意dubbo.registry.address對應的值需要對應當前使用的Zookeeper的ip地址和端口號 dubbo.registry.address=zookeeper://192.168.55.129:2181 4.2、使用

  訪問 http://localhost:8080/dubbo-admin-2.6.0/,輸入用戶名(root)和密碼(root) 即可查看網(wǎng)站,相關(guān)的服務(wù)信息都可以在這里進行查看。

5、 Dubbo相關(guān)配置

5.1、包掃描

<dubbo:annotation package="com.beordie.service" />

服務(wù)提供者和服務(wù)消費者都需要配置,表示包掃描,作用是掃描指定包(包括子包)下的類,提供者掃描服務(wù)所在的包,消費者掃描控制器所在的包。

如果不使用包掃描,也可以通過如下配置的方式來發(fā)布服務(wù):

<bean id="serviceImpl" class="com.beordie.service.impl.serviceImpl" />
<dubbo:service interface="com.beordie.service.Service" ref="serviceImpl" />

作為服務(wù)消費者,可以通過如下配置來引用服務(wù):

<!-- 生成遠程服務(wù)代理,可以和本地bean一樣使用Service -->
<dubbo:reference id="serviceTest" interface="com.beordie.ServiceTest" />

  上面這種方式發(fā)布和引用服務(wù),一個配置項(dubbo:service、dubbo:reference)只能發(fā)布或者引用一個服務(wù),如果有多個服務(wù),這種方式就比較繁瑣了。推薦使用包掃描方式。

5.2、Dubbo 協(xié)議

 一般在服務(wù)提供者一方配置,可以指定使用的協(xié)議名稱和端口號。

<dubbo:protocol name="dubbo" port="20880"/>
  • Dubbo支持的 協(xié)議 有:dubbo、rmi、hessian、http、webservice、rest、redis等。
  • 推薦使用的是dubbo協(xié)議。 dubbo 協(xié)議采用單一長連接和 NIO 異步通訊,適合于小數(shù)據(jù)量大并發(fā)的服務(wù)調(diào)用,以及服務(wù)消費者機器數(shù)遠大于服務(wù)提供者機器數(shù)的情況。不適合傳送大數(shù)據(jù)量的服務(wù),比如傳文件,傳視頻等,除非請求量很低。
  • 也可以在同一個工程中配置多個協(xié)議,不同服務(wù)可以使用不同的協(xié)議,例如:
<!-- 多協(xié)議配置 -->
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:protocol name="rmi" port="1099" />
<!-- 使用dubbo協(xié)議暴露服務(wù) -->
<dubbo:service interface="com.beordie.HelloService" ref="helloService"
protocol="dubbo" />
<!-- 使用rmi協(xié)議暴露服務(wù) -->
<dubbo:service interface="com.beordie.DemoService" ref="demoService"
protocol="rmi" />

5.3、負載均衡

負載均衡(Load Balance):其實就是將請求分攤到多個操作單元上進行執(zhí)行,從而共同完成工作任 務(wù)。

  • 在集群負載均衡時,Dubbo 提供了多種均衡策略(包括隨機、輪詢、最少活躍調(diào)用數(shù)、一致性 Hash),缺省為random隨機調(diào)用。
  • 配置負載均衡策略,既可以在服務(wù)提供者一方配置,也可以在服務(wù)消費者一方配置,如下:
// 調(diào)用方配置
@Reference(check = false,loadbalance = "random")
// 服務(wù)方配置
@Service(loadbalance = "random")

5.4、 Dubbo無法發(fā)布被事務(wù)代理的服務(wù)

問題

因為提供的是服務(wù)層的接口,在涉及數(shù)據(jù)庫的ACID 時就會添加事務(wù)管理,但是這樣服務(wù)將不會在 。ZooKeeper 中進行注冊,服務(wù)的消費端也就不會拿到對應的代理對象,也會報沒有可用的服務(wù)提供者的錯誤。

原因

加入事務(wù)注解后,Spring會為此類基于 JDK動態(tài)代理技術(shù) 創(chuàng)建代理對象,創(chuàng)建的代理對象完整類名為com.sun.proxy.$Proxy35,導致Dubbo在進行包匹配時沒有成功(因為我們在發(fā)布服務(wù)時掃描的包為com.beordie.service),所以后面真正發(fā)布服務(wù)的代碼沒有執(zhí)行。

解決

使用 cglib 代理方式為Service類創(chuàng)建代理對象,并指定發(fā)布的接口 @Service(interfaceClass = HelloService.class)

到此這篇關(guān)于Java中dubbo+zookeeper微服務(wù)架構(gòu)的文章就介紹到這了,更多相關(guān)dubbo zookeeper微服務(wù)架構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java的多線程高并發(fā)詳解

    java的多線程高并發(fā)詳解

    這篇文章主要介紹了java的多線程高并發(fā)詳解,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-04-04
  • String s = new String(''a '') 到底產(chǎn)生幾個對象

    String s = new String(''a '') 到底產(chǎn)生幾個對象

    這篇文章主要介紹了String s = new String(" a ") 到底產(chǎn)生幾個對象,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • RabbitMQ消息隊列之持久化機制詳解

    RabbitMQ消息隊列之持久化機制詳解

    這篇文章主要介紹了RabbitMQ消息隊列之持久化機制詳解,持久化,即將原本存在于內(nèi)存中的數(shù)據(jù)寫入到磁盤上永久保存數(shù)據(jù),防止服務(wù)宕機時內(nèi)存數(shù)據(jù)的丟失,Rabbitmq 的持久化分為隊列持久化、消息持久化和交換器持久化,需要的朋友可以參考下
    2023-08-08
  • Hadoop集成Spring的使用詳細教程(快速入門大數(shù)據(jù))

    Hadoop集成Spring的使用詳細教程(快速入門大數(shù)據(jù))

    這篇文章主要介紹了Hadoop集成Spring的使用詳細教程(快速入門大數(shù)據(jù)),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • java HttpClient傳輸json格式的參數(shù)實例講解

    java HttpClient傳輸json格式的參數(shù)實例講解

    這篇文章主要介紹了java HttpClient傳輸json格式的參數(shù)實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • 關(guān)于SpringBoot中的請求映射及使用

    關(guān)于SpringBoot中的請求映射及使用

    這篇文章主要介紹了關(guān)于SpringBoot中的請求映射及使用,Spring Boot 中的授權(quán)機制,包括基于角色的授權(quán)和基于資源的授權(quán),同時,我們也將給出相應的代碼示例,幫助讀者更好地理解和應用這些授權(quán)機制,需要的朋友可以參考下
    2023-07-07
  • java 抓取網(wǎng)頁內(nèi)容實現(xiàn)代碼

    java 抓取網(wǎng)頁內(nèi)容實現(xiàn)代碼

    這篇文章主要介紹了java 抓取網(wǎng)頁內(nèi)容實現(xiàn)代碼,需要的朋友可以參考下
    2014-02-02
  • Java double類型比較大小詳解

    Java double類型比較大小詳解

    這篇文章主要介紹了Java double類型比較大小,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot?整合?Spring-Session?實現(xiàn)分布式會話項目實戰(zhàn)

    SpringBoot?整合?Spring-Session?實現(xiàn)分布式會話項目實戰(zhàn)

    本文主要介紹了SpringBoot?整合?Spring-Session?實現(xiàn)分布式會話項目實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 淺談Java代碼的 微信長鏈轉(zhuǎn)短鏈接口使用 post 請求封裝Json(實例)

    淺談Java代碼的 微信長鏈轉(zhuǎn)短鏈接口使用 post 請求封裝Json(實例)

    下面小編就為大家?guī)硪黄獪\談Java代碼的 微信長鏈轉(zhuǎn)短鏈接口使用 post 請求封裝Json(實例)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07

最新評論