Trung tâm của các dịch vụ của chúng tôi là scala + akka + spray + mongo. Vì vậy, chúng tôi đang sử dụng GitHub để kiểm soát phiên bản. Sau khi hợp nhất các PR đã kiểm tra với nhánh master, Jenkins automaticaly tests'n'builds project. Nếu tất cả các xét nghiệm đã thành công sau đó Jenking chạy một vài kịch bản:
- phiên bản dự án Tăng (hiện bằng văn bản trong vỏ, nhưng sẽ được thay đổi để SBT) nhiệm vụ lắp ráp
- Run với sbt-assembly
- Run triển khai kịch bản (viết bằng Python với vải) Mà triển khai jar của chúng tôi để EC2
về cơ bản trên bước thrid bạn có một vài lựa chọn:
Thực hiện một jar Runnable sử dụng tập tin IO/Xịt khởi động:
object Boot extends App {
implicit val system = ActorSystem("ServiceName")
val log = system.log
val service = system.actorOf(Props[Service], name="serviceActor")
IO(Http) ! Http.Bind(service, interface = host, port = port)
}
Thực hiện một jar Runnable như microkernel Akka của:
Trong trường hợp này bạn nên mở rộng đặc điểm khả năng khởi động và ghi đè startup
và shutdown
phương pháp:
class Kernel extends Bootable {
// many lines of code
def startup() {
scheduler.start()
SomeActorSystem.startup()
}
def shutdown() {
scheduler.shutdown()
SomeActorSystem.shutdown()
system.shutdown()
}
}
Sử dụng một startscript typesafe:
Không thể hiển thị ví dụ, nhưng nó có phần giới thiệu tốt trên github =)
Chúng tôi đang sử dụng tất cả theo cách này trong các trường hợp khác nhau.
Bạn có thể giải thích về cách bạn xử lý tắt máy duyên dáng cho các dịch vụ phun thuốc vào lúc sản xuất không? Tôi có thể tạo ra một câu hỏi. – dmitry
@dmitry Chúng tôi không có nhu cầu hỗ trợ kết nối lâu dài, nhưng nói chung bạn có thể sử dụng cụm akka với persistence + actors lifecycle (actor hooks). Mặt khác, Spray cũng được xây dựng trên đầu trang của Akka, vì vậy bạn có thể xây dựng mô-đun của riêng bạn để tắt máy chủ một cách duyên dáng với thông báo 'Unbind' cho diễn viên nghe. 'Unbind' mất một thời gian tắt máy duyên dáng, sau đó gửi nó cho người nghe và chờ cho Chấm dứt, sau đó bạn có thể' tắt máy 'bạn dịch vụ. – 4lex1v
Chỉ cần cập nhật ở trên. Có vẻ như TypeSafe không sử dụng bản bắt đầu được thay thế bằng sbt-native-packager https://github.com/sbt/sbt-native-packager –