舉報

會員
Hands-On Reactive Programming in Spring 5
Thesedays,businessesneedanewtypeofsystemthatcanremainresponsiveatalltimes.Thisisachievablewithreactiveprogramming;however,thedevelopmentofthesekindsofsystemsisacomplextask,requiringadeepunderstandingofthedomain.Inordertodevelophighlyresponsivesystems,thedevelopersoftheSpringFrameworkcameupwithProjectReactor.Hands-OnReactiveProgramminginSpring5beginswiththefundamentalsofSpringReactiveprogramming.You’llexploretheendlesspossibilitiesofbuildingefficientreactivesystemswiththeSpring5FrameworkalongwithothertoolssuchasWebFluxandSpringBoot.Furtheron,you’llstudyreactiveprogrammingtechniquesandapplythemtodatabasesandcross-servercommunication.YouwilladvanceyourskillsinscalingupSpringCloudStreamsandrunindependent,high-performantreactivemicroservices.Bytheendofthebook,youwillbeabletoputyourskillstouseandgetonboardwiththereactiverevolutioninSpring5.1!
目錄(320章)
倒序
- 封面
- Title Page
- Copyright and Credits
- Hands-On Reactive Programming in Spring 5
- Dedication
- Packt Upsell
- Why subscribe?
- Packt.com
- Foreword
- Contributors
- About the authors
- About the reviewers
- Packt is searching for authors like you
- Preface
- Who this book is for
- What this book covers
- To get the most out of this book
- Download the example code files
- Download the color images
- Conventions used
- Get in touch
- Reviews
- Why Reactive Spring?
- Why reactive?
- Message-driven communication
- Reactivity use cases
- Why Reactive Spring?
- Reactivity on the service level
- Summary
- Reactive Programming in Spring - Basic Concepts
- Early reactive solutions in Spring
- Observer pattern
- Observer pattern usage example
- Publish-Subscribe pattern with @EventListener
- Building applications with @EventListener
- Bootstrapping a Spring application
- Implementing business logic
- Asynchronous HTTP with Spring Web MVC
- Exposing the SSE endpoint
- Configuring asynchronous support
- Building a UI with SSE support
- Verifying application functionality
- Criticism of the solution
- RxJava as a reactive framework
- Observer plus iterator equals Reactive Stream
- Producing and consuming streams
- Generating an asynchronous sequence
- Stream transformation and marble diagrams
- Map operator
- Filter operator
- Count operator
- Zip operator
- Prerequisites and benefits of RxJava
- Rebuilding our application with RxJava
- Implementing business logic
- Custom SseEmitter
- Exposing the SSE endpoint
- Application configuration
- Brief history of reactive libraries
- Reactive landscape
- Summary
- Reactive Streams - the New Streams' Standard
- Reactivity for everyone
- The API's inconsistency problem
- Pull versus push
- The flow control problem
- Slow producer and fast consumer
- Fast producer and slow consumer
- Unbounded queue
- Bounded drop queue
- Bounded blocking queue
- The solution
- The basics of the Reactive Streams spec
- Reactive Streams spec in action
- The introduction of the Processor notion
- Reactive Streams technology compatibility kit
- The Publisher verification
- The Subscriber verification
- JDK 9
- Advanced - async and parallel in Reactive Streams
- Transfiguration of the Reactive Landscape
- RxJava transfiguration
- Vert.x adjustments
- Ratpack improvements
- MongoDB Reactive Streams driver
- A composition of reactive technologies in action
- Summary
- Project Reactor - the Foundation for Reactive Apps
- A brief history of Project Reactor
- Project Reactor version 1.x
- Project Reactor version 2.x
- Project Reactor essentials
- Adding Reactor to the project
- Reactive types – Flux and Mono
- Flux
- Mono
- Reactive types of RxJava 2
- Observable
- Flowable
- Single
- Maybe
- Completable
- Creating Flux and Mono sequences
- Subscribing to Reactive Streams
- Implementing custom subscribers
- Transforming reactive sequences with operators
- Mapping elements of reactive sequences
- Filtering reactive sequences
- Collecting reactive sequences
- Reducing stream elements
- Combining Reactive Streams
- Batching stream elements
- The flatMap concatMap and flatMapSequential operators
- Sampling elements
- Transforming reactive sequences into blocking structures
- Peeking elements while sequence processing
- Materializing and dematerializing signals
- Finding an appropriate operator
- Creating streams programmatically
- Factory methods – push and create
- Factory method – generate
- Wrapping disposable resources into Reactive Streams
- Wrapping reactive transactions with the usingWhen factory
- Handling errors
- Backpressure handling
- Hot and cold streams
- Multicasting elements of a stream
- Caching elements of a stream
- Sharing elements of a stream
- Dealing with time
- Composing and transforming Reactive Streams
- Processors
- Testing and debugging Project Reactor
- Reactor Addons
- Advanced Project Reactor
- Reactive Streams life cycle
- Assembly-time
- Subscription-time
- Runtime
- The thread scheduling model in Reactor
- The publishOn operator
- Parallelization with the publishOn operator
- The subscribeOn operator
- The parallel operator
- Scheduler
- Rector Context
- Internals of Project Reactor
- Macro-fusion
- Micro-fusion
- Summary
- Going Reactive with Spring Boot 2
- A fast start as the key to success
- Using Spring Roo to try to develop applications faster
- Spring Boot as a key to fast-growing applications
- Reactive in Spring Boot 2.0
- Reactive in Spring Core
- Support for reactive types conversion
- Reactive I/O
- Reactive in web
- Reactive in Spring Data
- Reactive in Spring Session
- Reactive in Spring Security
- Reactive in Spring Cloud
- Reactive in Spring Test
- Reactive in monitoring
- Summary
- WebFlux Async Non-Blocking Communication
- WebFlux as a central reactive server foundation
- The reactive web core
- The reactive web and MVC frameworks
- Purely functional web with WebFlux
- Non-blocking cross-service communication with WebClient
- Reactive WebSocket API
- Server-side WebSocket API
- Client-side WebSocket API
- WebFlux WebSocket versus the Spring WebSocket module
- Reactive SSE as a lightweight replacement for WebSockets
- Reactive template engines
- Reactive web security
- Reactive access to SecurityContext
- Enabling reactive security
- Interaction with other reactive libraries
- WebFlux versus Web MVC
- Laws matter when comparing frameworks
- Little's Law
- Amdahl's Law
- The Universal Scalability Law
- Thorough analysis and comparison
- Understanding the processing models in WebFlux and Web MVC
- Impact of processing models on throughput and latency
- Challenges with the WebFlux processing model
- Impact of different processing models on memory consumption
- Impact of processing models on usability
- Application of WebFlux
- Microservice-based systems
- Systems that handle clients with slow connections
- Streaming or real-time systems
- WebFlux in action
- Summary
- Reactive Database Access
- Data handling patterns in the modern world
- Domain-driven design
- Data stores in the era of microservices
- Polyglot persistence
- Database as a Service
- Sharing data across microservices
- Distributed transactions
- Event-driven architecture
- Eventual consistency
- The SAGA pattern
- Event sourcing
- Command Query Responsibility Segregation
- Conflict-free replicated data types
- Messaging system as a data store
- Synchronous model for data retrieval
- Wire protocol for database access
- Database driver
- JDBC
- Connection management
- Making relational database access reactive
- Spring JDBC
- Spring Data JDBC
- Making Spring Data JDBC reactive
- JPA
- Making JPA reactive
- Spring Data JPA
- Making Spring Data JPA reactive
- Spring Data NoSQL
- Limitations of the synchronous model
- Advantages of the synchronous model
- Reactive data access with Spring Data
- Using MongoDB reactive repository
- Combining repository operations
- How reactive repositories work
- Pagination support
- ReactiveMongoRepository implementation details
- Using ReactiveMongoTemplate
- Using reactive drivers (MongoDB)
- Using asynchronous drivers (Cassandra)
- Reactive transactions
- Reactive transactions with MongoDB 4
- Distributed transactions with the SAGA pattern
- Spring Data reactive connectors
- Reactive MongoDB connector
- Reactive Cassandra connector
- Reactive Couchbase connector
- Reactive Redis connector
- Limitations and anticipated improvements
- Asynchronous Database Access
- Reactive Relational Database Connectivity
- Using R2DBC with Spring Data R2DBC
- Transforming a synchronous repository into reactive
- Using the rxjava2-jdbc library
- Wrapping a synchronous CrudRepository
- Reactive Spring Data in action
- Summary
- Scaling Up with Cloud Streams
- Message brokers as the key to message-driven systems
- Server-side load balancing
- Client-side load balancing with Spring Cloud and Ribbon
- Message brokers as an elastic reliable layer for message transferring
- The market of message brokers
- Spring Cloud Streams as a bridge to Spring Ecosystem
- Reactive programming in the cloud
- Spring Cloud Data Flow
- The finest-grained application with Spring Cloud Function
- Spring Cloud – function as a part of a data flow
- RSocket for low-latency reactive message passing
- RSocket versus Reactor-Netty
- RSocket in Java
- RSocket versus gRPC
- RSocket in Spring Framework
- RSocket in other frameworks
- The ScaleCube Project
- The Proteus Project
- Summarizing RSocket
- Summary
- Testing the Reactive Application
- Why are reactive streams hard to test?
- Testing reactive streams with StepVerifier
- Essentials of StepVerifier
- Advanced testing with StepVerifier
- Dealing with virtual time
- Verifying reactive context
- Testing WebFlux
- Testing Controllers with WebTestClient
- Testing WebSocket
- Summary
- And Finally Release It!
- The importance of DevOps-friendly apps
- Monitoring the Reactive Spring application
- Spring Boot Actuator
- Adding an actuator to the project
- Service info endpoint
- Health information endpoint
- Metrics endpoint
- Loggers management endpoint
- Other valuable endpoints
- Writing custom actuator endpoints
- Securing actuator endpoints
- Micrometer
- Default Spring Boot metrics
- Monitoring Reactive Streams
- Monitoring reactor flows
- Monitoring reactor schedulers
- Adding custom Micrometer meters
- Distributed tracing with Spring Boot Sleuth
- Pretty UI with Spring Boot Admin 2.x
- Deploying to the cloud
- Deploying to Amazon Web Services
- Deploying to the Google Kubernetes Engine
- Deploying to Pivotal Cloud Foundry
- Discovering RabbitMQ in PCF
- Discovering MongoDB in PCF
- Configurationless deployment with Spring Cloud Data Flow for PCF
- Knative for FaaS over Kubernetes and Istio
- Bits of advice for successful application deployment
- Summary
- Other Books You May Enjoy
- Leave a review - let other readers know what you think 更新時間:2021-07-23 16:37:22
推薦閱讀
- 社交網(wǎng)絡(luò)對齊
- 智慧城市:大數(shù)據(jù)、互聯(lián)網(wǎng)時代的城市治理(第4版)
- 光網(wǎng)絡(luò)評估及案例分析
- Twilio Cookbook
- Truffle Quick Start Guide
- 萬物互聯(lián):蜂窩物聯(lián)網(wǎng)組網(wǎng)技術(shù)詳解
- Learning Karaf Cellar
- 網(wǎng)絡(luò)互聯(lián)技術(shù)(實踐篇)
- PLC、現(xiàn)場總線及工業(yè)網(wǎng)絡(luò)實用技術(shù)速成
- 中小型局域網(wǎng)組建、管理與維護實戰(zhàn)
- 2018網(wǎng)信發(fā)展報告
- 網(wǎng)絡(luò)綜合布線(第2版)
- TCP/IP基礎(chǔ)(第2版)
- 精通SEO:100%網(wǎng)站流量提升密碼
- Professional Scala
- 物聯(lián)網(wǎng)概論
- 巧學(xué)活用CISCO網(wǎng)絡(luò)典型配置
- 5G重塑數(shù)字化未來
- Oracle ADF Faces Cookbook
- 產(chǎn)品經(jīng)理游戲化設(shè)計思維70計
- 結(jié)構(gòu)化決策力:成為你想成為的自己
- 5G物聯(lián)網(wǎng)端管云實戰(zhàn)
- Mastering Firebase for Android Development
- Android游戲開發(fā)技術(shù)實戰(zhàn)詳解
- Go Web Development Cookbook
- CCNP SWITCH (642-813) 認(rèn)證考試指南
- 大數(shù)據(jù)環(huán)境下的物聯(lián)網(wǎng)系統(tǒng)
- 運營商數(shù)據(jù)中心網(wǎng)絡(luò)架構(gòu)與技術(shù)
- 網(wǎng)絡(luò)安全技術(shù):網(wǎng)絡(luò)空間健康發(fā)展的保障
- Infinispan Data Grid Platform