2017-01-22 23 views
7

Tôi đã đọc rất nhiều về dịch vụ nhỏ và muốn xây dựng ứng dụng của mình theo cách tiếp cận đó. Những gì tôi biết cho đến nay là tôi NEAD một số dịch vụ như:Cách triển khai microservices trên Heroku

  • cân bằng tải - để đối phó với mọi yêu cầu và đẩy nó về phía trước với các dịch vụ khác
  • dịch vụ ủy quyền - cho phép người dùng của tôi
  • cơ sở dữ liệu - dành cho microservices của tôi. Tôi muốn sử dụng một thể hiện của DB với các lược đồ khác nhau cho mọi dịch vụ.
  • dịch vụ A - cho các chức năng Một
  • dịch vụ B - cho các chức năng B

  • vv vv vv

tôi phát hiện ra, đó Heroku là nơi thú vị triển khai ứng dụng. Vấn đề của tôi là tôi hoàn toàn không hiểu họ là hệ tư tưởng. Những gì tôi đã làm cho đến nay, là sự sáng tạo/đăng ký trong số ít "ứng dụng":

  • my-app-auth
  • my-app-load-balancer
  • vv vv

Tôi thấy, Heroku cho tôi một số tên máy công cộng cho mọi ứng dụng đó, và đây là nơi mà các mối quan tâm của tôi bắt đầu. Tôi có nên triển khai các dịch vụ nội bộ của mình với tên máy chủ công cộng không? Tôi không nghĩ vậy. Và đây là câu hỏi của tôi:

Có ai có thể cung cấp cho tôi một số hướng dẫn, cách xử lý các dịch vụ microsytices trên Heroku không? Tôi nên triển khai chúng như thế nào? Làm thế nào tôi nên xác định cân bằng tải của tôi, và móc các dịch vụ nội bộ cho nó? JHipster là gì? Tôi có cần nó không? Tôi có thể sử dụng nó như thế nào? Tôi có nên sử dụng các công cụ Heroku (ví dụ CLI) hoặc tôi có thể ở lại với repo gitlab của tôi? Tôi không thể tìm thấy bất kỳ điểm nắm bắt nào trên Internet, về điều đó.

+0

Có vẻ như bạn có một vài thứ lộn xộn (Heroku và Gitlab là các loại công ty khác nhau, một máy chủ lưu trữ webapp của bạn và một máy chủ lưu trữ mã/CI của bạn). Ngoài ra, nếu bạn không chắc chắn những gì JHipster là, tôi sẽ khuyên bạn nên đọc lên trên các tài liệu trước khi bạn đi sâu vào việc tạo ra microservices với nó. Dưới đây là một bài viết về việc triển khai các dịch vụ nhỏ của JHipster trên Heroku: https://blog.heroku.com/bootstrapping_your_microservices_architecture_with_jhipster_and_spring –

Trả lời

13

Heroku là một công ty Dịch vụ nền tảng rất đơn giản. Cách thức hoạt động của Heroku rất đơn giản:

  • Bạn có nhiều dự án (dịch vụ) trong Git repos.
  • Bạn tạo ứng dụng Heroku cho từng dự án (mỗi repo Git).
  • Sau đó, bạn đẩy mã của mình từ mỗi repo Git vào ứng dụng Heroku tương ứng của họ.
  • Heroku gán cho bạn URL công khai cho từng ứng dụng bạn có.
  • Nếu mỗi dịch vụ của bạn hiện đang chạy trên Heroku, họ có thể gửi yêu cầu API cho nhau qua các HTTP công cộng.

Hiện tại - liên quan đến câu hỏi của bạn về kiến ​​trúc hướng dịch vụ trên Heroku.

Nếu bạn đang làm SOA trên Heroku, bạn sẽ cần phải có mỗi dịch vụ trò chuyện công khai với nhau qua HTTPS. Đây là 'mô hình' điển hình.

Vì Heroku cung cấp SSL miễn phí cho mỗi ứng dụng và mỗi ứng dụng nằm trên cùng một khu vực Amazon - nói ngược lại và thứ tư giữa các dịch vụ của bạn qua HTTP rất nhanh chóng + an toàn.

Mỗi ứng dụng Heroku có cân bằng tải tự động, vì vậy không cần phải lo lắng về cân bằng tải.

Tùy chọn tiếp theo ở đây (nếu bạn không muốn làm theo các mẫu điển hình) là sử dụng một cái gì đó như RabbitMQ hoặc Amazon SQS (dịch vụ xếp hàng) và chia sẻ 'thông điệp' giữa các dịch vụ khác nhau của bạn. Trong mẫu này, bạn sẽ vẫn có một ứng dụng Heroku cho mỗi dịch vụ, nhưng thay vì giao tiếp với nhau qua HTTP, thay vào đó bạn sẽ liên lạc với các dịch vụ khác của mình thông qua giao thức xếp hàng như Rabbit hoặc SQS. Điều này có một số lợi ích tốc độ.

Đối với dịch vụ xác thực, có một số nhà cung cấp mà bạn có thể sử dụng để cung cấp chức năng này. Phổ biến nhất mà tôi biết là Stormpath. Nếu bạn xem qua số Heroku addon marketplace, bạn cũng có thể tìm những người khác.

Cuối cùng, đối với nội dung cơ sở dữ liệu: bạn có thể sử dụng bất kỳ nhà cung cấp cơ sở dữ liệu nào bạn muốn. Phổ biến nhất có thể là Heroku Postgres. Đó là một bản lưu trữ của PostgreSQL rất đáng tin cậy/dễ sử dụng.

Bạn có thể chia sẻ một cơ sở dữ liệu giữa TẤT CẢ các dịch vụ của mình hoặc bạn có thể có một databaes cho mỗi dịch vụ. Một trong hai chiến lược sẽ hoạt động tốt.

+0

Cảm ơn bạn đã trả lời. Bạn có thể mở rộng nó và cho tôi biết bạn nghĩ gì về việc sử dụng hình ảnh docker dữ liệu trên heroku? Nếu nó không phải là phổ biến (bởi vì Heroku cung cấp cơ chế quy mô tốt đẹp) tại sao có quá nhiều thông tin và bài viết về điều đó trên Internet? Ngoài ra tôi sẽ thực sự hạnh phúc nếu tôi có thể biết tâm trí của bạn về các giải pháp Netflix như Eureka hoặc Zuul. Tôi đoán rằng Eureka là phổ biến như là một điểm nhập cảnh cho các dịch vụ của tôi, nhưng theo như tôi hiểu cân bằng tải là phí, tôi có phải không? –

+1

Xin chào, tôi cho rằng những điều này phù hợp nhất với các câu hỏi StackOverflow khác. Nó sẽ gây nhầm lẫn cho người đọc nếu tôi đặt tất cả những gì trong chủ đề này. – rdegges

+0

Bạn nói đúng. Tôi đã thêm câu hỏi mới http://stackoverflow.com/q/41814001/2849613. Hãy xem nếu bạn muốn;) –

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