{"id":110026,"date":"2023-10-19T08:54:42","date_gmt":"2023-10-19T15:54:42","guid":{"rendered":"https:\/\/www.backblaze.com\/blog\/?p=110026"},"modified":"2025-12-12T13:11:08","modified_gmt":"2025-12-12T21:11:08","slug":"load-balancing-2-0-whats-changed-after-7-years","status":"publish","type":"post","link":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/","title":{"rendered":"Load Balancing 2.0: What\u2019s Changed After 7 Years?"},"content":{"rendered":"\r\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" class=\"wp-image-110030\" src=\"\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0-1024x583.png\" alt=\"A decorative image showing a file, a drive, and some servers. \" \/><\/figure>\r\n\r\n\r\n\r\n<div class=\"wp-block-spacer\" style=\"height: 10px;\" aria-hidden=\"true\">\u00a0<\/div>\r\n\r\n\r\n\r\n<p class=\"has-drop-cap wp-block-paragraph\">What do two billion transactions a day look like? Well, the data may be invisible to the naked eye, but the math breaks down to just over 23,000 transactions <strong>every second. <\/strong>(Shout out to <a href=\"https:\/\/www.youtube.com\/watch?v=YbfeSImDntw\" target=\"_blank\" rel=\"noreferrer noopener\">Kris Allen<\/a> for burning into my memory that there are 86,400 seconds in a day and my handy calculator!)\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Part of my job as a Site Reliability Engineer (SRE) at Backblaze is making sure that greater than 99.9% of those transactions are what we consider \u201cOK\u201d (via status code), and part of the fun is digging for the needle in the haystack of over 7,000 production servers and over 250,000 spinning hard drives to try and understand how all of the different transactions interact with the pieces of infrastructure.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">In this blog post, I\u2019m going to pick up where Principal SRE <a href=\"\/blog\/author\/elliott\/\" target=\"_blank\" rel=\"noreferrer noopener\">Elliott Sims<\/a> left off in <a href=\"\/blog\/load-balancing-and-b2-cloud-storage\/\" target=\"_blank\" rel=\"noreferrer noopener\">his 2016 article on load balancing<\/a>. You\u2019ll notice that the design principles we\u2019ve employed are largely the same (cool!). So, I\u2019ll review our stance on those principles, then talk about how the evolution of the <a href=\"https:\/\/www.backblaze.com\/cloud-storage\" target=\"_blank\" rel=\"noreferrer noopener\">B2 Cloud Storage platform<\/a>\u2014including the introduction of the S3 Compatible API\u2014has changed our load balancing architecture. Read on for specifics.\u00a0<\/p>\r\n\r\n\r\n\r\n<div class=\"abstract\" style=\"line-height: 1.8; margin: 24px 12px; padding: 24px 12px 10px 12px;\">\r\n<h4>Editor\u2019s Note<\/h4>\r\n<p>We know there are a ton of specialized networking terms flying around this article, and one of our primary goals is to make technical content accessible to all readers, regardless of their technical background. To that end, we\u2019ve used footnotes to add some definitions and minimize the disruption to your reading experience.<\/p>\r\n<\/div>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">What Is Load Balancing?<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Load balancing is the process of distributing traffic across a network. It helps with resource utilization, prevents overloading any one server, and makes your system more reliable. Load balancers also monitor server health and redirect requests to the most suitable server.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">With two billion requests per day to our servers, you can be assured that we use load balancers at Backblaze. Whenever anyone\u2014a Backblaze Computer Backup or a B2 Cloud Storage customer\u2014wants to upload or download data or modify or interact with their files, a load balancer will be there to direct traffic to the right server. Think of them as your trusty mail service, delivering your letters and packages to the correct destination\u2014and using things like zip codes and addresses to interpret your request and get things to the right place.\u00a0\u00a0<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">How Do We Do It?<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">We build our own load balancers using open-source tools. We use layer 4 load balancing with direct server response (DSR). Here are some of the resources that we call on to make that happen:\u00a0\u00a0<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Border gateway protocol (BGP) which is part of the Linux kernel<sup class=\"fn\" data-fn=\"991c5f1c-acea-4224-95ca-01959ab1d8cd\"><a id=\"991c5f1c-acea-4224-95ca-01959ab1d8cd-link\" href=\"#991c5f1c-acea-4224-95ca-01959ab1d8cd\">1<\/a><\/sup>. It\u2019s a standardized gateway protocol that exchanges routing and reachability information on the internet.\u00a0\u00a0\u00a0<\/li>\r\n\r\n\r\n\r\n<li><a href=\"https:\/\/www.keepalived.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">keepalived<\/a>, an open-source routing software. keepalived keeps track of all of our VIPs<sup class=\"fn\" data-fn=\"2fd8a678-f5b7-4c82-ae0b-9cbf1f18e154\"><a id=\"2fd8a678-f5b7-4c82-ae0b-9cbf1f18e154-link\" href=\"#2fd8a678-f5b7-4c82-ae0b-9cbf1f18e154\">2<\/a><\/sup> and IPs<sup class=\"fn\" data-fn=\"5be7060a-668b-49ab-93b5-7cad584437ff\"><a id=\"5be7060a-668b-49ab-93b5-7cad584437ff-link\" href=\"#5be7060a-668b-49ab-93b5-7cad584437ff\">3<\/a><\/sup> for each backend server.\u00a0<\/li>\r\n\r\n\r\n\r\n<li>Hard disk drives (HDDs). We use the same drives that we use for other API servers and whatnot, but that\u2019s definitely overkill\u2014we made that choice to save the work of sourcing another type of device.\u00a0\u00a0<\/li>\r\n\r\n\r\n\r\n<li>A lot of hard work by a lot of really smart folks.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">What We Mean by Layers<\/h4>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When we\u2019re talking about layers in load balancing, it\u2019s shorthand for how deep into the architecture your program needs to see. Here\u2019s a great diagram that defines those layers:\u00a0<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"882\" height=\"918\" class=\"wp-image-110029\" src=\"\/wp-content\/uploads\/2023\/10\/Load-Balancing_2_Layers.png\" alt=\"An image describing application layers.\" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/Load-Balancing_2_Layers.png 882w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/Load-Balancing_2_Layers-288x300.png 288w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/Load-Balancing_2_Layers-768x799.png 768w\" sizes=\"auto, (max-width: 882px) 100vw, 882px\" \/>\r\n<figcaption class=\"wp-element-caption\"><a href=\"https:\/\/kemptechnologies.com\/load-balancer\/layer-7-load-balancing\">Source.<\/a><\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<div class=\"wp-block-spacer\" style=\"height: 10px;\" aria-hidden=\"true\">\u00a0<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">DSR takes place at layer 4, but solves the problem presented by a full proxy<sup class=\"fn\" data-fn=\"9e0c883c-4b01-44c2-a0bc-e61520bab82f\"><a id=\"9e0c883c-4b01-44c2-a0bc-e61520bab82f-link\" href=\"#9e0c883c-4b01-44c2-a0bc-e61520bab82f\">4<\/a><\/sup> method, having to see the original client\u2019s IP address.<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Why Do We Do It the Way We Do It?<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Building our own load balancers, instead of buying an off-the-shelf solution, means that we have more control and insight, more cost-effective hardware, and more scalable architecture. In general, DSR is more complicated to set up and maintain, but this method also lets us handle lots of traffic with minimal hardware and supports our goal of keeping data encrypted, even within our own data center.\u00a0<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">What Hasn\u2019t Changed<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">We\u2019re still using a layer 4 DSR approach to load balancing, which we\u2019ll explain below. For reference, other common methods of load balancing are layer 7, full proxy and layer 4, full proxy load balancing.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">First, I\u2019ll explain how DSR works. DSR load balancing requires two things:<\/p>\r\n\r\n\r\n\r\n<ol class=\"wp-block-list\">\r\n<li>A load balancer with the VIP address attached to an external NIC<sup class=\"fn\" data-fn=\"40f37cc3-09dd-4069-924e-aa202872760d\"><a id=\"40f37cc3-09dd-4069-924e-aa202872760d-link\" href=\"#40f37cc3-09dd-4069-924e-aa202872760d\">5<\/a><\/sup> and ARPing<sup class=\"fn\" data-fn=\"cab87b90-d3b7-4660-9f31-934ee31be3bc\"><a id=\"cab87b90-d3b7-4660-9f31-934ee31be3bc-link\" href=\"#cab87b90-d3b7-4660-9f31-934ee31be3bc\">6<\/a><\/sup>, so that the rest of the network knows it \u201cowns\u201d the IP.<\/li>\r\n\r\n\r\n\r\n<li>Two or more servers on the same layer 2 network that also have the VIP address attached to a NIC, either internal or external, but are not replying to ARP requests about that address. This means that no other servers on the network know that the VIP exists anywhere but on the load balancer.<\/li>\r\n<\/ol>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">A request packet will enter the network, and be routed to the load balancer. Once it arrives there, the load balancer leaves the source and destination IP addresses intact and instead modifies the destination MAC<sup class=\"fn\" data-fn=\"cd74e227-0fa2-41f2-a8f9-2a86a9e874d9\"><a id=\"cd74e227-0fa2-41f2-a8f9-2a86a9e874d9-link\" href=\"#cd74e227-0fa2-41f2-a8f9-2a86a9e874d9\">7<\/a><\/sup> address to that of a server, then puts the packet back on the network. The network switch only understands MAC addresses, so it forwards the packet on to the correct server.<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"439\" class=\"wp-image-110028\" style=\"aspect-ratio: 1.6400911161731206; width: 840px; height: auto;\" src=\"\/wp-content\/uploads\/2023\/10\/Load-Balancing_2_DSR-Diagram.png\" alt=\"A diagram of how a packet moves through the network router and load balancer to reach the server, then respond to the original client request. \" srcset=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/Load-Balancing_2_DSR-Diagram.png 720w, https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/Load-Balancing_2_DSR-Diagram-300x183.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/figure>\r\n\r\n\r\n\r\n<div class=\"wp-block-spacer\" style=\"height: 10px;\" aria-hidden=\"true\">\u00a0<\/div>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When the packet arrives at the server\u2019s network interface, it checks to make sure the destination MAC address matches its own. The address matches, so the server accepts the packet. The server network interface then, separately, checks to see whether the destination IP address is one attached to it somehow. That\u2019s a yes, even though the rest of the network doesn\u2019t know it, so the server accepts the packet and passes it on to the application. The application then sends a response with the VIP as the source IP address and the client as the destination IP, so the request (and subsequent response) is routed directly to the client without passing back through the load balancer.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">So, What\u2019s Changed?<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Lots of things. But, since <a href=\"\/blog\/load-balancing-and-b2-cloud-storage\/\" target=\"_blank\" rel=\"noreferrer noopener\">we first wrote this article<\/a>, we\u2019ve expanded our offerings and platform. The biggest of these changes (as far as load balancing is concerned) is that we added the <a href=\"https:\/\/www.backblaze.com\/docs-s3-compatible-api?highlight=s3%20compatible\" target=\"_blank\" rel=\"noreferrer noopener\">S3 Compatible API.<\/a>\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">We also serve a much more diverse set of clients, both in the size of files they have and their access patterns. File sizes affect how long it takes us to serve requests (larger files = more time to upload or download, which means an individual server is tied up for longer). Access patterns can vastly increase the amount of requests a server has to process on a regular, but not consistent basis (which means you might have times that your network is more or less idle, and you have to optimize appropriately).\u00a0<\/p>\r\n\r\n\r\n\r\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" class=\"wp-image-110027\" src=\"\/wp-content\/uploads\/2023\/10\/Load-Balancing_1_OG-Header.jpeg\" alt=\"A definitely Photoshopped images showing a giraffe riding an elephant on a rope in the sky. The rope's anchor points disappear into clouds.\" \/>\r\n<figcaption class=\"wp-element-caption\">So, if we were to update this amazing image from the first article, we might have a tightrope walker with a balancing pole on top of the giraffe, plus some birds flying on a collision course with the elephant.<\/figcaption>\r\n<\/figure>\r\n\r\n\r\n\r\n<div class=\"wp-block-spacer\" style=\"height: 10px;\" aria-hidden=\"true\">\u00a0<\/div>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Where You Can See the Changes: ECMP, Volume of Data Per Month, and API Processing<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">DSR is how we send data to the customer\u2014the server responds (sends data) directly to the request (client). This is the equivalent of going to the post office to mail something, but adding your home address as the return address (so that you don\u2019t have to go back to the post office to get your reply).\u00a0\u00a0\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Given how our platform has evolved over the years, things might happen slightly differently. Let\u2019s dig in to some of the details that affect how the load balancers make their decisions\u2014what rules govern how they route traffic, and how different types of requests cause them to behave differently. We\u2019ll look at:<\/p>\r\n\r\n\r\n\r\n<ul class=\"wp-block-list\">\r\n<li>Equal cost multipath routing (ECMP).\u00a0<\/li>\r\n\r\n\r\n\r\n<li>Volume of data in petabytes (PBs) per month.<\/li>\r\n\r\n\r\n\r\n<li>APIs and processing costs.<\/li>\r\n<\/ul>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">ECMP<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">One thing that\u2019s not explicitly outlined above is how the load balancer determines which server should respond to a request. At Backblaze, we use stateless load balancing, which means that the load balancer doesn\u2019t take into account most information about the servers it routes to. We use a round robin approach\u2014i.e. the load balancers choose between one of a few hosts, in order, each time they\u2019re assigning a request.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">We also use <a href=\"https:\/\/research.google\/pubs\/pub44824\/#:~:text=Maglev%20is%20Google%27s%20network%20load,by%20adding%20or%20removing%20servers\" target=\"_blank\" rel=\"noreferrer noopener\">Maglev<\/a>, so the load balancers use consistent hashing and connection tracking. This means that we\u2019re minimizing the negative impact of unexpected faults failures from connection-oriented protocols. If a load balancer goes down, its server pool can be transferred to another, and it will make decisions in the same way, seamlessly picking up the load. When the initial load balancer comes back online, it already has a connection to its load balancer friend and can pick up where it left off.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">The upside is that it\u2019s super rare to see a disruption, and it essentially only happens when the load balancer and the neighbor host go down in a short period of time. The downside is that the load balancer decision is static. If you have \u201cbetter\u201d servers for one reason or another\u2014they\u2019re newer, for instance\u2014they don\u2019t take that information into account. On the other hand, we do have the ability to push more traffic to specific servers through ECMP weights if we need to, which means that we have good control over a diverse fleet of hardware.\u00a0<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">Volume of Data<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Backblaze now has over three exabytes of storage under management. Based on the scalability of the network design, that doesn\u2019t really make a huge amount of difference when you\u2019re scaling your infrastructure properly. What can make a difference is how people store and access their data.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Most of the things that make managing large datasets difficult from an architecture perspective can also be silly for a client. For example: querying files individually (creating lots of requests) instead of batching or creating a range request. (There may be a business reason to do that, but usually, it makes more sense to batch requests.)<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On the other hand, some things that make sense for how clients need to store data require architecture realignment. One of those is just a sheer fluctuation of data by volume\u2014if you\u2019re adding and deleting large amounts of data (we\u2019re talking hundreds of terabytes or more) on a \u201cshorter\u201d cycle (monthly or less), then there will be a measurable impact. And, with more data stored, you have the potential for more transactions.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Similarly, if you need to retrieve data often, but not regularly, there are potential performance impacts. Most of them are related to caching, and ironically, they can actually improve performance. The more you query the same \u201cset\u201d of servers for the same file, the more likely that each server in the group will have cached your data locally (which means they can serve it more quickly).\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">And, as with most data centers, we store our long term data on hard disk drives (HDDs), whereas our API servers are on solid state drives (SSDs). There are <a href=\"\/blog\/hdd-versus-ssd-whats-the-diff\/\" target=\"_blank\" rel=\"noreferrer noopener\">positives and negatives<\/a> to each type of drive, but the performance impact is that data at rest takes longer to retrieve, and data in the cache is on a faster SSD drive on the API server.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">On the other hand, the more servers the data center has, the lower the chance that the servers can\/will deliver cached data. And, of course, if you\u2019re replacing large volumes of old data with new on a shorter timeline, then you won\u2019t see the benefits. It sounds like an edge case, but industries like security camera data are a great example. While they don\u2019t retrieve their data very frequently, they are constantly uploading and overwriting their data, often to meet different industry requirements about retention periods, which can be challenging to allocate a finite amount of input\/output operations per second (IOPS) for uploads, downloads, and deletes.\u00a0\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">That said, the built-in benefit of our system is that adding another load balancer is (relatively) cheap. If we\u2019re experiencing a processing chokepoint for whatever reason\u2014typically either a CPU bottleneck or from throughput on the NIC\u2014we can add another load balancer, and just like that, we can start to see bits flying through the new load balancer and traffic being routed amongst more hosts, alleviating the choke points.\u00a0<\/p>\r\n\r\n\r\n\r\n<h3 class=\"wp-block-heading\">APIs and Processing Costs<\/h3>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">We mentioned above that one of the biggest changes to our platform was the addition of the S3 Compatible API. When all requests were made through the B2 Native API, the Backblaze CLI tool, or the web UI, the processing cost was relatively cheap.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">That\u2019s because of the way our upload requests to the <a href=\"\/blog\/vault-cloud-storage-architecture\/\" target=\"_blank\" rel=\"noreferrer noopener\">Backblaze Vaults<\/a> are structured. When you make an upload request via the Native API, there are actually two transactions, one to get an upload URL, and the second to send a request to the Vault. And, all other types of requests (besides upload) have always had to be processed through our load balancers. Since the S3 Compatible API is a single request, we knew we would have to add more processing power and load balancers. (If you want to go back to 2018 and see some of the reasons why, here\u2019s <a href=\"\/blog\/design-thinking-b2-apis-the-hidden-costs-of-s3-compatibility\/\" target=\"_blank\" rel=\"noreferrer noopener\">Brian Wilson on the subject<\/a>\u2014read with the caveat that our <a href=\"https:\/\/www.backblaze.com\/docs-s3-compatible-api\" target=\"_blank\" rel=\"noreferrer noopener\">current Tech Doc on the subject<\/a> outlines how we solve the complications he points out.)\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">We\u2019re still leveraging DSR to respond directly to the client, but we\u2019ve significantly increased the amount of transactions that hit our load balancers, both because it has to take on more of the processing during transit and because, well, lots of folks like to use the S3 Compatible API and our customer base has grown by a quite a bit since 2018.\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">And, just like above, we\u2019ve set ourselves up for a relatively painless fix: we can add another load balancer to solve <em>most<\/em> problems.\u00a0<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Do We Have More Complexity?<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">This is the million dollar question, solved for a dollar: how could we not? Since our first load balancing article, we\u2019ve added features, complexity, and lots of customers. Load balancing algorithms are inherently complex, but we (mostly Elliott and other smart people) have taken a lot of time and consideration to not just build a system that will scale to up and past two billion transactions a day, but that can be fairly &#8220;easily&#8221; explained and doesn&#8217;t require a graduate degree to understand what is happening.\u00a0\u00a0<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">But, we knew it was important early on, so we prioritized building a system where we could \u201cjust\u201d add another load balancer. The thinking is more complicated at the outset, but the tradeoff is that it\u2019s simple once you\u2019ve designed the system. It would take a lot for us to outgrow the usefulness of this strategy\u2014but hey, we might get there someday. When we do, we\u2019ll write you another article.\u00a0<\/p>\r\n\r\n\r\n\r\n<h4 class=\"wp-block-heading\">Footnotes<\/h4>\r\n\r\n\r\n","protected":false},"excerpt":{"rendered":"<p>Load balancing is, in short, the process of distributing traffic across a network. Read how Backblaze handles over two billion requests per day. <\/p>\n","protected":false},"author":198,"featured_media":110180,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":"","jetpack_post_was_ever_published":false},"categories":[7,434],"tags":[],"class_list":["post-110026","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud-storage","category-featured-1","entry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>What is a Data Load Balancer? What&#039;s Changed After 7 Years<\/title>\n<meta name=\"description\" content=\"Explore how Backblaze handles over two billion daily transactions with effective load balancing and innovative infrastructure solutions.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is a Data Load Balancer? What&#039;s Changed After 7 Years\" \/>\n<meta property=\"og:description\" content=\"Explore how Backblaze handles over two billion daily transactions with effective load balancing and innovative infrastructure solutions.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/\" \/>\n<meta property=\"og:site_name\" content=\"Backblaze Blog | Cloud Storage &amp; Cloud Backup\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/backblaze\" \/>\n<meta property=\"article:published_time\" content=\"2023-10-19T15:54:42+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-12T21:11:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"820\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"nathaniel wagner\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@backblaze\" \/>\n<meta name=\"twitter:site\" content=\"@backblaze\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"nathaniel wagner\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"What is a Data Load Balancer? What's Changed After 7 Years","description":"Explore how Backblaze handles over two billion daily transactions with effective load balancing and innovative infrastructure solutions.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/","og_locale":"en_US","og_type":"article","og_title":"What is a Data Load Balancer? What's Changed After 7 Years","og_description":"Explore how Backblaze handles over two billion daily transactions with effective load balancing and innovative infrastructure solutions.","og_url":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/","og_site_name":"Backblaze Blog | Cloud Storage &amp; Cloud Backup","article_publisher":"https:\/\/www.facebook.com\/backblaze","article_published_time":"2023-10-19T15:54:42+00:00","article_modified_time":"2025-12-12T21:11:08+00:00","og_image":[{"width":1440,"height":820,"url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0.png","type":"image\/png"}],"author":"nathaniel wagner","twitter_card":"summary_large_image","twitter_creator":"@backblaze","twitter_site":"@backblaze","twitter_misc":{"Written by":"nathaniel wagner","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#article","isPartOf":{"@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/"},"author":{"name":"nathaniel wagner","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/504ef8569d92951dd0c4fb7ba2543cbc"},"headline":"Load Balancing 2.0: What\u2019s Changed After 7 Years?","datePublished":"2023-10-19T15:54:42+00:00","dateModified":"2025-12-12T21:11:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/"},"wordCount":2483,"commentCount":2,"publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0.png","articleSection":["Cloud Storage","Featured"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/","url":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/","name":"What is a Data Load Balancer? What's Changed After 7 Years","isPartOf":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#primaryimage"},"image":{"@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#primaryimage"},"thumbnailUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0.png","datePublished":"2023-10-19T15:54:42+00:00","dateModified":"2025-12-12T21:11:08+00:00","description":"Explore how Backblaze handles over two billion daily transactions with effective load balancing and innovative infrastructure solutions.","breadcrumb":{"@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#primaryimage","url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0.png","contentUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0.png","width":1440,"height":820,"caption":"A decorative image showing a file, a drive, and some servers."},{"@type":"BreadcrumbList","@id":"https:\/\/www.backblaze.com\/blog\/load-balancing-2-0-whats-changed-after-7-years\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Load Balancing 2.0: What\u2019s Changed After 7 Years?"}]},{"@type":"WebSite","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#website","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","name":"Backblaze Cloud Solutions Blog","description":"Cloud Storage &amp; Cloud Backup","publisher":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#organization","name":"Backblaze","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/www.backblaze.com\/blog\/wp-content\/uploads\/2017\/12\/backblaze_icon_transparent.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Backblaze"},"image":{"@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/backblaze","https:\/\/x.com\/backblaze","https:\/\/www.youtube.com\/user\/Backblaze","https:\/\/en.wikipedia.org\/wiki\/Backblaze"]},{"@type":"Person","@id":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/#\/schema\/person\/504ef8569d92951dd0c4fb7ba2543cbc","name":"nathaniel wagner","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2024\/02\/blog_photo3-300x300-1-150x150.jpeg","url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2024\/02\/blog_photo3-300x300-1-150x150.jpeg","contentUrl":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2024\/02\/blog_photo3-300x300-1-150x150.jpeg","caption":"nathaniel wagner"},"description":"nathaniel wagner is a Senior Site Reliability Engineer (SRE) at Backblaze, a team responsible for (in nathaniel's words) \"when things inevitably break.\" He has previously served as a Systems Engineer, a position where he helped run the backend application and database servers for hospitals throughout the U.S. and Canada, and specifically ensuring ACID compliance in large Oracle databases. These days, he spends his time thinking about the consistency of over 100 billion files in a Cassandra cluster with over 200 nodes. (For fun, he says.)","url":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/author\/nathanielwagner\/"}]}},"jetpack_featured_media_url":"https:\/\/backblazeprod.wpenginepowered.com\/wp-content\/uploads\/2023\/10\/bb-bh-Load-Balancing-2.0.png","_links":{"self":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/110026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/users\/198"}],"replies":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/comments?post=110026"}],"version-history":[{"count":0,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/posts\/110026\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media\/110180"}],"wp:attachment":[{"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/media?parent=110026"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/categories?post=110026"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/backblazeprod.wpenginepowered.com\/blog\/wp-json\/wp\/v2\/tags?post=110026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}