extend ../_components/base.pug

block pagetitle
    | Real-Time Streaming APIs

block css 
    link(rel="stylesheet", href="../css/native-persistence.css")
    link(rel="stylesheet", href="../css/compute-apis.css")
    link(rel="stylesheet", href="../css/streaming.css")
 

  



block main
    - global.pageHref = "features"
    - config.hdrClassName = "hdr__blue"
    include ../_components/header.pug


    section.innerhero
        .container.innerhero__cont
            .innerhero__main
                .innerhero__pre.pb-3 Apache Ignite
                h1.h1.innerhero__h1 Real-Time Streaming<br> APIs
                .innerhero__descr.pt-2.h5.
                    Ingest streams of data and build  event-driven architectures
                .innerhero__action 
                    a.button.innerhero__button(href="https://ignite.apache.org/docs/latest/index") Start Coding
            img.innerhero__pic.innerhero__pic--stream(src="/public/img/features/streaming/hero-image.svg", alt="stream-hero")
    // /.innerhero

    section.stream1
       .container
          .stream1__block.flexi
              p.stream1__p.h4 With Apache Ignite you can<strong> load and stream</strong> large finite — or never-ending — volumes of data<strong> in a scalable and fault-tolerant way</strong> into the cluster.
              .stream1__part
                   img.stream1__img(src="/public/img/features/streaming/speed.png", alt="speed")
                   p.stream1__text The rate at which data can be injected into Ignite <strong>exceeds millions of events per second </strong>on a moderately sized cluster.
    // /.stream1

    section.stream2
       .container
           .stream2__block.flexi
              .stream2__content
                  h2.stream2__h2.h4 Ignite Core Streaming APIs
                  h3.stream2__h3 What are those APIs?
                  p.stream2__text With Ignite core streaming APIs such as IgniteDataStreamer you get basic streaming capabilities out of the box. You can stream and transform your data originating from multiple custom sources.<br><br>Ignite data streamers automatically buffer the data and group it into batches for better performance and send it in parallel to multiple nodes.
              img.stream2__img(src="/public/img/features/streaming/sql.svg", alt="sql")
    // /.stream2

    section.stream3
       .container
          h2.stream3__h2.h4 IgniteDataStreamer is used for:
          .stream3__blocks.flexi
               .stream3__block
                   .stream3__part.flexi
                       .compute2-points__item.fz20
                       p.stream3__text Data loading
                   .stream3__part.stream3__end.flexi.ml-04
                       .compute2-points__item.fz20
                       p.stream3__text Real-time data streaming
               .stream3__block
                   .stream3__part.stream3__first.flexi
                       .compute2-points__item.fz20
                       p.stream3__text Achieving advanced streaming capabilities by integrating with streaming frameworks:
                   .stream3__item.stream3__itemstart.flexi 
                       img.stream3__img(src="/public/img/features/streaming/one.png", alt="one")
                       img.stream3__img(src="/public/img/features/streaming/two.svg", alt="two")
                       img.stream3__img(src="/public/img/features/streaming/three.png", alt="three")
                   .stream3__item.flexi
                       img.stream3__img(src="/public/img/features/streaming/four.svg", alt="four")
                       img.stream3__img(src="/public/img/features/streaming/five.svg", alt="five")
                       img.stream3__img(src="/public/img/features/streaming/six.svg", alt="six")
    // /.stream3

    section.stream4
       .container
          h2.stream4__h2.h4 Event-Driven Architecture Basic Principles
          p.stream4__p In many cases, streams of data we receive comprise events that we have to react to.<br>
              span.stream4__greys With Apache Ignite, you can:
          .stream4__block.flexi
             .stream4__part
                .stream4__number 01
                .stream4__text Enrich and transform your data<br> on on-the-fly.
             .stream4__part.stream4__parttwo
                .stream4__number 02
                .stream4__text Execute any calculations in response<br> to an event on the cluster-node side.
             .stream4__part
                .stream4__number 03
                .stream4__text React to your streams of data on the application side with continuous queries.
                .stream4__grey If streamed data represents an event, your application-side logic can react to it after receiving a notification from continuous queries.


    // /.stream4              
                
           

    section.native-bottom.container
        .native-bottom__grid 
            article.nativebotblock
                h3.h4.nativebotblock__title
                    img(src="/public/img/features/native-rocket.svg", alt="").nativebotblock__icon
                    span Ready to Start?
                p.nativebotblock__text Start coding with Ignite Streaming APIs
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/data-streaming", target="_blank") Ignite Streaming APIs
            article.nativebotblock.nativebotblock--learn
                h3.h4.nativebotblock__title
                    img(src="/public/img/features/native-docs.svg", alt="").nativebotblock__icon
                    span Want to Learn More?
                p.nativebotblock__text Explore our out-of-the-box integrations with Kafka, Flink, MQTT and other advanced streaming technologies
                a.nativebotblock__link.arrowlink(href="https://ignite.apache.org/docs/latest/extensions-and-integrations/spring/spring-boot", target="_blank") Extensions and integrations guide




