- Microservices Development Cookbook
- Paul Osman
- 351字
- 2021-07-16 17:48:26
How to do it...
Migrating data from a monolith database to a new store fronted by a new service, without any impact on availability or consistency, is a difficult but common task when making the transition to microservices. Using our fictional photo-messaging application, we can imagine a scenario where we want to create a new microservice responsible for handling media uploads. In this scenario, we'd follow a common dual-writing pattern:
- Before writing a new service to handle media uploads, we'll assume that the monolith architecture looks something like the following diagram, where HTTP requests are being handled by the monolith, which presumably reads the multipart/form-encoded content body as a binary object and stores the file in a distributed file store (Amazon's S3 service, for example). Metadata about the file is then written to a database table, called attachments, as shown in the following diagram:

- After writing a new service, you now have two write paths. In the write path in the monolith, make a call to your service so that you're replicating the data in the monolith database as well as the database fronted by your new service. You're now duplicating new data and can write a script to backfill older data. Your architecture now looks something like this:

- Find all read paths in your Client and Monolith code, and update them to use your new service. All reads will now be going to your service, which will be able to give consistent results.
- Find all write paths in your Client and Monolith code, and update them to use your new service. All reads and writes are now going to your service, and you can safely delete old data and code paths. Your final architecture should look something like the following (we'll discuss edge proxies in later chapters):
Using this approach, you'll be able to safely migrate data from a monolith database to a new store created for a new microservice without the need for downtime. It's important not to skip this step; otherwise, you won't truly realize the benefits of microservice architectures (although, arguably, you'll experience all the downsides!).
- 網絡故障現場處理實踐(第4版)
- Hands-On Chatbot Development with Alexa Skills and Amazon Lex
- 萬物互聯:蜂窩物聯網組網技術詳解
- 物聯網信息安全
- Web Application Development with R Using Shiny
- Go Web Scraping Quick Start Guide
- Drush User’s Guide
- PLC、現場總線及工業網絡實用技術速成
- SSL VPN : Understanding, evaluating and planning secure, web/based remote access
- Yii Application Development Cookbook(Second Edition)
- 5G技術與標準
- Learning Node.js Development
- 云計算技術與標準化
- 5G非正交多址接入技術:理論、算法與實現
- 區塊鏈社區運營手冊