Là một dịch vụ micros micros của người dùng là một ý tưởng tốt?


9

Tôi chưa quen với microservice và theo hiểu biết của tôi, DDD nói rằng microservice sẽ được xây dựng xung quanh các lĩnh vực kinh doanh. Điều này có nghĩa là các dịch vụ tốt sẽ giống như AppointmentScheduler và SendNotification trong bối cảnh hệ thống đặt phòng họp.

Trong ví dụ này, cả hai dịch vụ siêu nhỏ này sẽ yêu cầu quyền truy cập vào dữ liệu người dùng để thực hiện các chức năng kinh doanh của họ và tôi đang vật lộn với cách tốt nhất để cung cấp nó.

Đối với tôi, một Người dùng có vẻ như là một đối tượng nên tồn tại như một thực thể trong microservice , nhưng nó sẽ cần tồn tại trong hầu hết các dịch vụ siêu nhỏ vì dữ liệu người dùng được yêu cầu ở hầu hết mọi nơi. Điều này cũng giới thiệu rất nhiều sự trùng lặp.

Tùy chọn khác là có một microservice User cung cấp các hoạt động CRUD trên cơ sở dữ liệu người dùng. Điều này sau đó có thể được sử dụng bởi các dịch vụ siêu nhỏ khác để truy cập dữ liệu người dùng, nhưng vấn đề tôi gặp phải là nó kết hợp chặt chẽ các dịch vụ với nhau đến mức chúng ta kết thúc với một khối nguyên khối phân tán, tốt hơn một chút so với nguyên khối.

Liệu lý luận của tôi có vẻ hợp lệ? Làm thế nào những người khác đối phó với vấn đề?


1
Một khối nguyên khối phân tán không thực sự tốt hơn một khối, thường khó bảo trì hơn. Đây là một thuật ngữ được sử dụng để mô tả quá trình chuyển đổi thất bại sang kiến ​​trúc microservice.
Milan Velebit

1
Bạn không nhầm lẫn với xác thực và dữ liệu người dùng?
user1428716

Tôi nghĩ nó sẽ giúp bạn liệt kê những dữ liệu người dùng mà các dịch vụ này cần. Để bắt đầu, dịch vụ thông báo yêu cầu thông tin người dùng là gì?
JimmyJames

2
Giả sử bạn có tất cả các câu trả lời sẽ không giúp bạn nhận được bất kỳ. Mục đích của bài tập là giúp bạn nhận ra rằng bạn có thể không cần dữ liệu người dùng trong mọi dịch vụ. Một microservice thực sự sạch, có thể tái sử dụng sẽ không cần 'dữ liệu người dùng'. Nó cần một điểm đến cho các thông báo.
JimmyJames

2
@Umair Một cách tốt để tìm hiểu xem bạn có thể làm điều này hay điều đó với microservice là xác định lý do tại sao bạn cần microservice ngay từ đầu. Trừ khi bạn đang cố gắng giải quyết một vấn đề cụ thể trong đó chúng là lựa chọn ưu việt, sử dụng microservice chỉ vì nó thường là một ý tưởng khủng khiếp sẽ cắn vào mông bạn như một trình phân tích cú pháp html-regex thủ công. Chỉ cần nói.
T. Sar

Câu trả lời:


2

Nếu bạn thực sự cần cùng một đối tượng / mô hình / bản ghi người dùng trong hầu hết các dịch vụ siêu nhỏ của mình, thì có lẽ bạn không cần phải có các dịch vụ siêu nhỏ riêng biệt HOẶC họ phải là đối tượng không theo kiến ​​thức của họ. Do đó, mỗi microservice quản lý một kiểu con của mô hình Người dùng với dữ liệu cần thiết cho chức năng của nó, với một khóa được sử dụng để phân biệt Người dùng đó. Trong một thế giới lý tưởng, theo cách đó bạn có thể thực hiện các đột biến cần thiết và truyền các thay đổi trong toàn hệ thống thông qua một nhà môi giới sự kiện nào đó (giả sử bạn có kiến ​​trúc hướng sự kiện), nếu không, mỗi dịch vụ sẽ phải nhận biết một số (hoặc tất cả) các dịch vụ khác và ý nghĩa của chúng là làm gì và loại đối tượng nào chúng muốn nhận.

Hãy nhớ rằng trong một môi trường microservice thực sự, mỗi microservice dự kiến ​​sẽ có kho lưu trữ dữ liệu riêng biệt với phần còn lại của hệ thống, sao lưu hoàn toàn tuyên bố ban đầu của tôi rằng bạn nên loại bỏ hoàn toàn khái niệm về một thực thể Người dùng .

Chẳng hạn, một dịch vụ siêu nhỏ SendNotification sẽ chỉ nhận được một đối tượng có mã định danh websocket (được truyền qua các dịch vụ, cuối cùng đạt đến dịch vụ này) và dữ liệu được cho là trả lại cho người dùng và có lẽ chỉ cần xác minh rằng các trường cần thiết ở đó và đẩy thông báo đến kênh thích hợp bằng mã định danh WS. Nó không cần phải biết loại đối tượng nào nó xử lý cả.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.