Hướng dẫn mongodb connection pool java - nhóm kết nối mongodb java

Tôi muốn thay đổi kích thước mặc định của nhóm kết nối được cung cấp bởi trình điều khiển Java MongoDB là 100 theo Mongo Docs. which is 100 according to mongo docs. which is 100 according to mongo docs.

Nội dung chính ShowShow

  • MongoDB có hỗ trợ kết nối gộp không?
  • Làm thế nào để MongoDB kết nối với Spring Boot?
  • Kích thước nhóm kết nối mặc định trong MongoDB là gì?
  • Làm cách nào để tham gia hai bộ sưu tập MongoDB trong Spring Boot?

Dưới đây là Bean Client Mongo mà tôi đã sử dụng để tùy chỉnh kích thước nhóm kết nối (đã giới thiệu câu hỏi này). Tôi đặt cả hai thuộc tính Min và Max ConnectionPerhost thành 1 và chạy 10 luồng công nhân song song tương tác với DB để đảm bảo rằng thay đổi của tôi được áp dụng.

@Bean
public Mongo mongo() throws Exception {
    MongoClientOptions.Builder clientOptions = new MongoClientOptions.Builder();
    clientOptions.minConnectionsPerHost(1);
    clientOptions.connectionsPerHost(1);
    MongoClient mongoClient = new MongoClient(new MongoClientURI(env.getProperty("mongodbhost"), clientOptions));
    return mongoClient;
}

Sau đó, tôi đã tính toán các điểm thời gian bắt đầu và kết thúc của mỗi luồng công nhân. Vì vậy, tôi biết chắc chắn các luồng đang hoạt động một cách tương tự và kích thước nhóm kết nối của tôi không thay đổi theo cấu hình này. Bất cứ ai có thể giúp tôi vượt qua điều này xin vui lòng? Bất cứ sự giúp đỡ nào cũng được đánh giá cao!

Đã hỏi ngày 7 tháng 11 năm 2017 lúc 15:02Nov 7, 2017 at 15:02Nov 7, 2017 at 15:02

Hướng dẫn mongodb connection pool java - nhóm kết nối mongodb java

5

Với các phiên bản trình điều khiển Spring Spring (2.0.0 +) và Mongo DB Java (3.9 +) có thể được sử dụng để tạo mẫu Mongo có thể định cấu hình trong Spring Boot.

Hầu hết các cấu hình trước đây là một phần của Mongoclientoptions được chuyển đến Mongoclientseting.

import com.mongodb.*;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

import com.mongodb.connection.*;
import org.springframework.data.mongodb.core.MongoTemplate;

@Configuration
public class MongoConfig {

    //-- variables 

    @Bean(name = "mongoTemplate")
    public MongoTemplate getMongoTemplate(){
        MongoTemplate mongoTemplate = new MongoTemplate(getMongoClient(), mongoDatabaseName);
        return mongoTemplate;
    }

    private MongoClient getMongoClient(){
        List serverAddressList = new ArrayList<>();
        String[] hostPortList = mongoHostPortList.split(",");
        for (String serverAddress : hostPortList) {
            String[] hostPortArr = serverAddress.split(":");
            serverAddressList.add(new ServerAddress(hostPortArr[0], Integer.parseInt(hostPortArr[1])));
        }

        MongoClientSettings mongoSettingsProperties = getMongoClientSettings();
        MongoClient mongoClient = MongoClients.create(mongoSettingsProperties);
        return mongoClient;
    }

    private MongoClientSettings getMongoClientSettings() {
        return MongoClientSettings.builder()
                .applicationName(appName)
                .applyToSslSettings(sslBuilder ->
                        SslSettings.builder().
                                enabled(sslEnabled).
                                invalidHostNameAllowed(false).build())
                .applyToConnectionPoolSettings(connPoolBuilder ->
                        ConnectionPoolSettings.builder().
                                maxWaitTime(maxWaitTime, MILLISECONDS).
                                maxSize(connectionPoolMinSize).
                                maxSize(connectionPoolMaxSize).build())
                .applyToSocketSettings(socketBuilder ->
                        SocketSettings.builder().
                                connectTimeout(connectionTimeout,MILLISECONDS).build())
                .readPreference(ReadPreference.secondaryPreferred())
                .build();
    }
}

Mã trên được xác minh với các phụ thuộc -

    
        org.springframework.boot
        spring-boot-starter-data-mongodb
        2.3.1.RELEASE
    

    
        org.mongodb
        mongo-java-driver
        3.11.2
    

Đã trả lời ngày 10 tháng 7 năm 2020 lúc 7:33Jul 10, 2020 at 7:33Jul 10, 2020 at 7:33

Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB ManualMongoDB Manual

Trên trang này

  • Nhóm kết nối là gì?
  • Tạo và sử dụng nhóm kết nối
  • Kết nối cụm mảnh ghép gộp
  • Cài đặt cấu hình nhóm kết nối

Tài liệu này mô tả cách sử dụng nhóm kết nối để quản lý kết nối giữa các ứng dụng và các phiên bản MongoDB.

Nhóm kết nối là bộ đệm của các kết nối cơ sở dữ liệu mở, sẵn sàng sử dụng được duy trì bởi trình điều khiển. Ứng dụng của bạn có thể kết nối một cách liền mạch từ nhóm, thực hiện các hoạt động và quay lại kết nối trở lại nhóm. Nhóm kết nối an toàn.connection pool is a cache of open, ready-to-use database connections maintained by the driver. Your application can seamlessly get connections from the pool, perform operations, and return connections back to the pool. Connection pools are thread-safe.connection pool is a cache of open, ready-to-use database connections maintained by the driver. Your application can seamlessly get connections from the pool, perform operations, and return connections back to the pool. Connection pools are thread-safe.

Nhóm kết nối giúp giảm độ trễ ứng dụng và số lần kết nối mới được tạo.

Một nhóm kết nối tạo ra các kết nối khi khởi động. Các ứng dụng không cần phải quay số kết nối theo cách thủ công vào nhóm. Thay vào đó, các kết nối tự động quay trở lại nhóm.

Một số kết nối đang hoạt động và một số không hoạt động nhưng có sẵn. Nếu ứng dụng của bạn yêu cầu kết nối và có một kết nối có sẵn trong nhóm, một kết nối mới không cần phải được tạo.

Hầu hết các trình điều khiển cung cấp một đối tượng loại MongoClient.drivers provide an object of type MongoClient.drivers provide an object of type MongoClient.

Sử dụng một ví dụ MongoClient cho mỗi ứng dụng trừ khi ứng dụng kết nối với nhiều cụm riêng biệt. Mỗi ví dụ MongoClient quản lý nhóm kết nối của riêng mình với cụm mongoDB hoặc nút được chỉ định khi MongoClient được tạo. MongoClient Đối tượng là an toàn cho chủ đề trong hầu hết các trình điều khiển.

Ghi chú

Lưu trữ phiên bản MongoClient của bạn ở một nơi có thể truy cập toàn cầu bởi ứng dụng của bạn.

Để sử dụng nhóm kết nối với LDAP, hãy xem hành vi nhóm kết nối LDAP.

import com.mongodb.*;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;

import com.mongodb.connection.*;
import org.springframework.data.mongodb.core.MongoTemplate;

@Configuration
public class MongoConfig {

    //-- variables 

    @Bean(name = "mongoTemplate")
    public MongoTemplate getMongoTemplate(){
        MongoTemplate mongoTemplate = new MongoTemplate(getMongoClient(), mongoDatabaseName);
        return mongoTemplate;
    }

    private MongoClient getMongoClient(){
        List serverAddressList = new ArrayList<>();
        String[] hostPortList = mongoHostPortList.split(",");
        for (String serverAddress : hostPortList) {
            String[] hostPortArr = serverAddress.split(":");
            serverAddressList.add(new ServerAddress(hostPortArr[0], Integer.parseInt(hostPortArr[1])));
        }

        MongoClientSettings mongoSettingsProperties = getMongoClientSettings();
        MongoClient mongoClient = MongoClients.create(mongoSettingsProperties);
        return mongoClient;
    }

    private MongoClientSettings getMongoClientSettings() {
        return MongoClientSettings.builder()
                .applicationName(appName)
                .applyToSslSettings(sslBuilder ->
                        SslSettings.builder().
                                enabled(sslEnabled).
                                invalidHostNameAllowed(false).build())
                .applyToConnectionPoolSettings(connPoolBuilder ->
                        ConnectionPoolSettings.builder().
                                maxWaitTime(maxWaitTime, MILLISECONDS).
                                maxSize(connectionPoolMinSize).
                                maxSize(connectionPoolMaxSize).build())
                .applyToSocketSettings(socketBuilder ->
                        SocketSettings.builder().
                                connectTimeout(connectionTimeout,MILLISECONDS).build())
                .readPreference(ReadPreference.secondaryPreferred())
                .build();
    }
}

0 Bộ định tuyến có các nhóm kết nối cho mỗi nút trong cụm. Sự sẵn có của các kết nối với các nút riêng lẻ trong một cụm bị che khuất ảnh hưởng đến độ trễ. Hoạt động phải chờ một kết nối được thiết lập.

Để định cấu hình nhóm kết nối, hãy đặt các tùy chọn:

  • thông qua URI MongoDB,

  • theo chương trình khi xây dựng trường hợp MongoClient hoặc

  • Trong các tệp cấu hình của khung ứng dụng của bạn.

MongoDB có hỗ trợ kết nối gộp không?

Bộ định tuyến CLUSTED CLUSTER CLUSTER GOPOS có các nhóm kết nối cho mỗi nút trong cụm.mongos routers have connection pools for each node in the cluster.mongos routers have connection pools for each node in the cluster.

Làm thế nào để MongoDB kết nối với Spring Boot?

Hãy bắt đầu bằng cách cài đặt và định cấu hình tất cả những gì bạn cần để đi ....

Cài đặt MongoDB.....

Xem lại các yêu cầu Java.....

Có được SDK chia.....

Chạy ứng dụng Boot MongoDB + Spring.....

Thêm cờ tính năng.....

Tạo và quản lý sự chia rẽ ..

Kích thước nhóm kết nối mặc định trong MongoDB là gì?

100 (MaxPoolSize Mặc định 100) x 4 (Máy chủ ứng dụng) = 400 (kết nối đến với mỗi Mongod).400 (incoming connections to each mongod).400 (incoming connections to each mongod).

Làm cách nào để tham gia hai bộ sưu tập MongoDB trong Spring Boot?

Dưới đây là Bean Client Mongo mà tôi đã sử dụng để tùy chỉnh kích thước nhóm kết nối (đã giới thiệu câu hỏi này). Tôi đặt cả hai thuộc tính Min và Max ConnectionPerhost thành 1 và chạy 10 luồng công nhân song song tương tác với DB để đảm bảo rằng thay đổi của tôi được áp dụng.use the $lookup operator. It is defined as a stage that executes a left outer join with another collection and aids in filtering data from joined documents. For example, if a user requires all grades from all students, then the below query can be written: Students.