bookmate game
en
Martin Kleppmann

Designing Data-Intensive Applications

Giv mig besked når bogen er tilgængelig
Denne bog er ikke tilgængelig i streaming pt. men du kan uploade din egen epub- eller fb2-fil og læse den sammen med dine andre bøger på Bookmate. Hvordan overfører jeg en bog?
  • esandrewhar citeretfor 4 år siden
    However, the downside of approach 2 is that posting a tweet now requires a lot of extra work. On average, a tweet is delivered to about 75 followers, so 4.6k tweets per second become 345k writes per second to the home timeline caches. But this average hides the fact that the number of followers per user varies wildly, and some users have over 30 million followers. This means that a single tweet may result in over 30 million writes to home timelines! Doing this in a timely manner—Twitter tries to deliver tweets to followers within five seconds—is a significant challenge. In the example of Twitter, the distribution of followers per user (maybe weighted by how often those users tweet) is a key load parameter for discussing scalability, since it determines the fan-out load. Your application may have very different characteristics, but you can apply similar principles to reasoning about its load.
  • Hyeonsoo Shinhar citeretfor 5 dage siden
    One of the best tools we have for removing accidental complexity is abstraction. A good abstraction can hide a great deal of implementation detail behind a clean, simple-to-understand façade. A good abstraction can also be used for a wide range of different applications. Not only is this reuse more efficient than reimplementing a similar thing multiple times, but it also leads to higher-quality software, as quality improvements in the abstracted component benefit all applications that use it
  • Hyeonsoo Shinhar citeretfor 10 dage siden
    Operability
    Make it easy for operations teams to keep the system running smoothly.
    Simplicity
    Make it easy for new engineers to understand the system, by removing as much complexity as possible from the system. (Note this is not the same as simplicity of the user interface.)
    Evolvability
    Make it easy for engineers to make changes to the system in the future, adapting it for unanticipated use cases as requirements change. Also known as extensibility, modifiability, or plasticity.
  • Hyeonsoo Shinhar citeretfor 23 dage siden
    A fault is usually defined as one component of the system deviating from its spec, whereas a failure is when the system as a whole stops providing the required service to the user
  • Hyeonsoo Shinhar citeretsidste måned
    We call an application data-intensive if data is its primary challenge—the quantity of data, the complexity of data, or the speed at which it is changing—as opposed to compute-intensive, where CPU cycles are the bottleneck
  • Samson Mwathihar citeretsidste år
    Many applications today are data-intensive , as opposed to compute-intensive
  • b9449300348har citeretfor 2 år siden
    CPU clock speeds are barely increasing, but multi-core processors are stand
  • Peter Gazaryanhar citeretfor 2 år siden
    A data-intensive application is typically built from standard building blocks that provide commonly needed functionality. For example, many applications need to:

    Store data so that they, or another application, can find it again later (databases)

    Remember the result of an expensive operation, to speed up reads (caches)

    Allow users to search data by keyword or filter it in various ways (search indexes)

    Send a message to another process, to be handled asynchronously (stream processing)

    Periodically crunch a large amount of accumulated data (batch processing)
  • exordiumexordiumhar citeretfor 4 år siden
    The currently trendy style of application development involves breaking down functionality into a set of services that communicate via synchronous network requests such as REST APIs (see “Dataflow Through Services: REST and RPC”). The advantage of such a service-oriented architecture over a single monolithic application is primarily organizational scalability through loose coupling: different teams can work on different services, which reduces coordination effort between teams (as long as the services can be deployed and updated independently).
  • esandrewhar citeretfor 4 år siden
    There is no quick solution to the problem of systematic faults in software. Lots of small things can help: carefully thinking about assumptions and interactions in the system; thorough testing; process isolation; allowing processes to crash and restart; measuring, monitoring, and analyzing system behavior in production.
fb2epub
Træk og slip dine filer (ikke mere end 5 ad gangen)