美文网首页
Ignite 源码分析(二)

Ignite 源码分析(二)

作者: 走在成长的道路上 | 来源:发表于2020-10-08 12:27 被阅读0次

    JDBCRedisMemcached服务端类图

    client processor 类图

    CacheJdbcPojoStoreFactory 通常是在 bean 文件中进行定义,如下:

    <!-- 定义集群外 h2 数据库访问方式 -->
    <bean id="storeDataSource" class="org.h2.jdbcx.JdbcDataSource">
        <property name="url" value="jdbc:h2:tcp://localhost/store-benchmark/h2-benchmark"/>
        <property name="user" value="sa"/>
    </bean>
    
    <!-- 定义集群基础配置 -->
    <bean class="org.apache.ignite.configuration.IgniteConfiguration">
        <property name="peerClassLoadingEnabled" value="false"/>
    
        <property name="cacheConfiguration">
            <list>
            <bean class="org.apache.ignite.configuration.CacheConfiguration">
                <property name="name" value="atomic"/>
    
                <property name="cacheMode" value="PARTITIONED"/>
    
                <property name="atomicityMode" value="ATOMIC"/>
    
                <property name="cacheStoreFactory">
                <!-- 定义后端数据库配置 -->
                    <bean class="org.apache.ignite.cache.store.jdbc.CacheJdbcPojoStoreFactory">
                        <property name="dataSourceBean" value="storeDataSource"/>
                        <property name="dialect">
                           <bean class="org.apache.ignite.cache.store.jdbc.dialect.H2Dialect"/>
                        </property>
                    </bean>
                </property>
            </bean>
            </list>
        </property>
    
        <property name="loadBalancingSpi">
            <bean class="org.apache.ignite.spi.loadbalancing.roundrobin.RoundRobinLoadBalancingSpi">
            <property name="perTask" value="false"/>
            </bean>
        </property>
    
        <property name="localHost" value="127.0.0.1"/>
    </bean>
    

    IgniteH2Indexing 中使用 QueryParser 中的 GridSqlQuerySplitter 将接受到的 SQL 请求按分区进行封装为执行指令,通过 GridMapQueryExecutorGridReduceQueryExecutor 来进行分布式查询及结果的聚合操作。

    启动过程

    IgniteKernel 中存在一系列的 XXXProcessor 类的启动过程,其中就包含 ClientListenerProcessor (用于 JDBC 实现),及 IgniteRestProcessor (用于 Redis,Memcached,Http 等Rest 接口实现)

    startProcessor(createComponent(IGridClusterStateProcessor.class, ctx));
    startProcessor(new IgniteAuthenticationProcessor(ctx));
    // 缓存相关代码
    startProcessor(new GridCacheProcessor(ctx));
    // 后端数据库服务
    startProcessor(new GridQueryProcessor(ctx));
    // JDBC 访问方式
    startProcessor(new ClientListenerProcessor(ctx));
    startProcessor(createServiceProcessor());
    startProcessor(new GridTaskSessionProcessor(ctx));
    startProcessor(new GridJobProcessor(ctx));
    startProcessor(new GridTaskProcessor(ctx));
    startProcessor((GridProcessor)SCHEDULE.createOptional(ctx));
    // http,redis,memcached 等访问方式
    startProcessor(createComponent(IgniteRestProcessor.class, ctx));
    startProcessor(new DataStreamProcessor(ctx));
    startProcessor(new GridContinuousProcessor(ctx));
    startProcessor(new DataStructuresProcessor(ctx));
    startProcessor(createComponent(PlatformProcessor.class, ctx));
    startProcessor(new DistributedMetaStorageImpl(ctx));
    startProcessor(new DistributedConfigurationProcessor(ctx));
    startProcessor(new DurableBackgroundTasksProcessor(ctx));
    

    相关文章

      网友评论

          本文标题:Ignite 源码分析(二)

          本文链接:https://www.haomeiwen.com/subject/aoocpktx.html