11

Nhóm của chúng tôi hiện đang khám phá ý tưởng khám phá dịch vụ cho ứng dụng Symfony2 sử dụng Consul. Đang ở trong biên giới tương đối, có rất ít ở đó trong cách thảo luận. Cho đến nay chúng tôi đã phát hiện:Cách xử lý cấu hình thời gian chạy của Symfony2 Sử dụng dịch vụ Consul Discovery

suy nghĩ hiện tại là để khám phá cách sử dụng các quan sát Lãnh sự để tái kích hoạt một bộ đệm xây dựng cùng với các tham số bên ngoài. Điều đó nói rằng, có một số lo ngại về chi phí của một hoạt động như vậy nếu các dịch vụ thay đổi bán thường xuyên.

Dựa trên những điều trên và kiến ​​thức về Consul/Symfony internals, đó có phải là phương pháp được khuyến nghị không? Nếu không, tại sao, và những lựa chọn thay thế nào có sẵn?

Trả lời

2

Trình xem KV đơn giản đặt giá trị vào các tham số.yml, kích hoạt bộ nhớ cache: rõ ràng là tùy chọn đơn giản nhất theo ý kiến ​​của tôi và cũng cung cấp lợi ích của việc biên dịch sao cho không phải đi đến Lãnh sự mỗi lần kiểm tra xem các giá trị có được cập nhật không. Như bạn đã nói, một số chi phí nhưng dường như không sao nếu bạn không thay đổi các thông số của bạn sau mỗi 5 phút.

Chúng tôi đang khám phá tùy chọn đó ngay bây giờ nhưng nếu bạn thực hiện bất kỳ tiến trình nào về điều này, bản cập nhật sẽ được đánh giá cao.

[Cập nhật 2016-02-23] Chúng tôi đã triển khai ý tưởng tôi đã đề cập ở trên và hoạt động như mong đợi: tốt. Hãy nhớ rằng, chúng tôi chỉ thay đổi các tham số của chúng tôi khi triển khai phiên bản mới (vì chúng tôi cũng sử dụng tính năng khám phá dịch vụ của Consul nên không cần phải cập nhật danh sách dịch vụ trong tham số). Chúng tôi chủ yếu làm điều đó vì nó tiết kiệm cho chúng tôi công việc nhàm chán về việc thay đổi các thông số trên một số máy chủ. Như thường lệ: điều này có thể không hiệu quả với bạn nhưng tôi nghĩ bạn sẽ an toàn nếu như tôi đã nói trước đây, bạn không thay đổi tham số của mình cứ sau 5 phút :)

+1

Nếu bạn có câu hỏi MỚI, vui lòng hỏi câu hỏi bằng cách nhấp vào nút [Hỏi câu hỏi (// stackoverflow.com/questions/ask). Nếu bạn có đủ danh tiếng, [bạn có thể upvote] (// stackoverflow.com/privileges/vote-up) câu hỏi. Ngoài ra, "gắn dấu sao" làm mục ưa thích và bạn sẽ được thông báo về bất kỳ câu trả lời mới nào. – Tunaki

+0

Tôi có thể hiểu lầm nhưng điều này đối với tôi là một câu hỏi liên quan đến chủ đề này. Tôi yêu cầu một bản cập nhật về câu hỏi của riêng mình, không phải cho bất cứ ai khác để trả lời nó perse (mặc dù đó sẽ là tốt đẹp) – Frank

+1

Vì vậy, đây là một bình luận sau đó, và ý kiến ​​có thể không được đăng như câu trả lời trên StackOverflow. Người dùng [giành được đặc quyền nhận xét] (// meta.stackexchange.com/questions/214173/) bằng cách tham gia thông qua các câu hỏi, câu trả lời và các hoạt động chỉnh sửa. – Tunaki

4

Trong công ty tôi làm việc, chúng tôi đã đi theo một tuyến đường khác .

Thay vì chiến đấu chống lại Symfony để chấp nhận cấu hình thời gian chạy (ví dụ như Spring Data Consul), chúng tôi quyết định thực hiện cấu hình Symfony cập nhật, trong một khái niệm tương tự, khác với triển khai hơn Frank.

Chúng tôi đã cài đặt Consul và Consul Template. Chúng tôi tạo cặp nhập K/V chứa toàn bộ tệp parameters.yml.Ví dụ:

chính: eblock/config/parameters.yml

parameters: 
    router.request_context.host: dev.eblock.ca 
    router.request_context.scheme: http 
    router.request_context.base_url:/

Sau đó, một tập tin cấu hình lãnh template đã được bổ sung tại địa điểm /opt/consul-template/config/eblock.cfg:

template { 
    source = "/opt/consul-template/templates/eblock-parameters.yml.ctmpl" 
    destination = "/var/www/eblock/app/config/parameters.yml" 
    command = "/opt/eblock/scripts/parameters_updated.sh" 
} 

Nội dung của file ctmpl là:

{{key "eblock/config/parameters.yml"}} 

Cuối cùng , số parameters_updated.sh tập lệnh của chúng tôi:

#!/bin/bash 

readonly PROGNAME=$(basename "$0") 
readonly LOCKFILE_DIR=/tmp 
readonly LOCK_FD=201 

lock() { 
    local prefix=$1 
    local fd=${2:-$LOCK_FD} 
    local lock_file=$LOCKFILE_DIR/$prefix.lock 

    # create lock file 
    eval "exec $fd>$lock_file" 

    # acquire the lock 
    flock -n $fd \ 
     && return 0 \ 
      || return 1 
} 

lock $PROGNAME || exit 0 

export HOME=/root 
logger "Starting composer install" && \ 
/usr/local/bin/composer install -d=/var/www/eblock/ --no-interaction && \ 
logger "Running composer dump-autoload" && \ 
/usr/local/bin/composer dump-autoload -d=/var/www/eblock/--optimize && \ 
logger "Running app/console c:c/c:w" && \ 
/usr/bin/php /var/www/eblock/app/console c:c -e=prod --no-warmup && \ 
/usr/bin/php /var/www/eblock/app/console c:w -e=prod && \ 
logger "Running doctrine commands" && \ 
/usr/bin/php /var/www/eblock/app/console doctrine:database:create --env=prod --if-not-exists && \ 
/usr/bin/php /var/www/eblock/app/console doctrine:migrations:migrate -n --env=prod && \ 
logger "Restarting php-fpm" && \ 
/bin/systemctl restart php-fpm & 

Biết rằng cả dịch vụ lãnh sự và lãnh sự đều tăng, ngay khi giá trị thay đổi trong khóa được chỉ định cho mẫu lãnh sự, nó sẽ đổ tệp vào đích được định cấu hình và chạy lệnh cho các tham số được cập nhật.

Nó hoạt động như một sự quyến rũ. =)

Các vấn đề liên quan