zoukankan      html  css  js  c++  java
  • Apache geode 安装使用

    Apache geode

    可在广泛分布的云架构中提供对数据密集型应用程序的实时,一致的访问。
    Geode还是一个内存数据管理系统,可提供可靠的异步事件通知和有保证的消息传递。
     
    任务: 跟redis一样的,先在linux搭建一个单机,再java写一个客户端,消费端,测试一下。
     

    geode下载

     

    linux 安装,解压即可 (jdk要1.8以上)

    新建一个/work目录专门安装软件和上传软件包
    cd /
    mkdir work
    tar -zxvf apache-geode-1.12.0.tgz
    mv apache-geode-1.12.0 geode
    

      

     
    编辑/etc/profile 添加环境变量,就可以直接使用gfsh命令。但是一般本机账户没有权限,要root才行,所以我们可以使用sudo命令
    sudo vim /etc/profile
    在配置最下面添加:
    export PATH=$PATH:/work/geode/bin
    使用下面命令,让配置马上生效
    source /etc/profile
    

      

    启动locator

    (它告诉一个新连接的成员其它正在运行的成员的位置,并为服务器提供负载均衡。用于监测和管理geode集群)
    gfsh
    start locator --name=locator1
     

    启动基于浏览器的pulse监控工具

    start pulse
    Running desktop applications is not supported on Linux.
     
    这个命令启动pulse并自动连接到locator的JMX管理器,
    在pulse的登录页面 http://192.168.1.141:7070/pulse  
    默认账户:admin  密码:admin。
     
    后台运行语法(了解即可):
    gfsh
    如要直接在命令行上运行多个命令,请使用-e选项,然后gfsh在引号内加上命令。例如:
    gfsh -e "start locator --name=locator1" -e "start server --name=server1 --server-port=40411"
     
    启动/停止缓存服务器Server
    start server --name=server1 --server-port=40411
    stop server --name=server1
     
     
    创建分区,策略REPLICATE_PERSISTENT
    create region --name=regionA --type=REPLICATE_PERSISTENT
     
     
    bug:在server1上创建分区后,在pluse上提示server1崩溃退出
    Member Departed server1 has crashed = false
    查看server1.log:
    The disk volume . for disk store DEFAULT has exceeded the critical usage threshold and is 64% full
    磁盘卷。对于磁盘存储,默认值已超过临界使用阈值,并且已满64%
    geode.cache.DiskAccessException: For DiskStore: DEFAULT: Critical disk usage threshold exceeded for volume /home/appadmin/server1/.: the file system only has 765480960 bytes free which is below the minimum of 1094713344.
    对于DiskStore:DEFAULT:超过volume/home/appadmin/server1/的关键磁盘使用阈值:文件系统只有765480960个可用字节,低于最小值1094713344。(1044MB)
    居然在home文件下启动geode并默认在/home下存储数据了。
    在/work目录下,我的空间比较大, 需要指定server 和 locator启动的初始化目录就可以
    解决办法:
    cd /work/
    [user@flxxxxx work]$ df -h .
    Filesystem Size Used Avail Use% Mounted on
    /dev/mapper/vg_root-lv_work 216G 296M 216G 1% /work
    排查了一波,/work磁盘有整整216G
    切换到 /work/geode 下执行gfsh,再启动locator 和 server,启动成功,此目录下空间充足,server 不会因为空间不足而自动停止了。
     
     
    用gfsh命令来查看集群中的区域
    gfsh> list regions
    

      

    列出集群上的成员,你开启的locator和缓存服务器出现在列表中
    gfsh> list members
    

      

    查看区域说明
    gfsh> describe region --name=regionA
    

      

     
     
    注意事项:在新的终端窗口 启动gfsh时,你必须使用connect命令connect其指向正在运行的定位器,以便你可以找到regionA等;
    (只要使用了新的shell,重新建立了连接,就需要执行此步骤,以便于找到属于你的locator)
    (或者当使用 quit 退出了gfsh命令窗口,想再次重连已经启动的locator时也要使用下面的命令方式)
    gfsh> connect --locator=localhost[10334]
    

      

     
     
    ============分割线=============

    JAVA API DEMO 链接

    依赖
    <dependencies>
      <dependency>
        <groupId>org.apache.geode</groupId>
        <artifactId>geode-core</artifactId>
        <version>1.12.0</version>
      </dependency>
    </dependencies>
    

      

    关于发布jar包到geode (凡是自定义的实体类对象要存到geode, 就要实现DataSerializable 接口,并打成jar包 发布到geode上)
     
    部署位于指定目录下的所有jar文件到所有的成员:
    gfsh> deploy --dir=/work/geode/deploy
    

      

    卸载分布式系统中所有之前部署的jar文件:
    gfsh> undeploy
    

      

    为啥要发布到geode里呢?
    因为我们用UserBean的序列化和反序列化作为表结构,因此deode查询时需要UserBean.class,我们发布hellogeode-0.0.1-SNAPSHOT.jar到geode,主要是为了把UserBean.class导入到geode里;
    gfsh> deploy --jar=/work/geode/deploy/spring-geode-demo-1.0-SNAPSHOT.jar
     
    若是我们对UserBean有修改的话,需要先卸载jar,然后再重新发布
    gfsh> undeploy --jar=hellogeode-0.0.1-SNAPSHOT.jar
     
    查看发布的jar包情况
    gfsh>list deployed
     
    OQL查询BUG
    gfsh>query --query="select * from /regionA where age>9999"
    Result : false
    Message : A ClassNotFoundException was thrown while trying to deserialize cached value.
    报错因为没有deploy实体类的 jar包,发布后就可以了
     
    IDEA直接运行BUG
    WARN org.apache.geode.cache.client.internal.ConnectionFactoryImpl - Could not connect to: flixxxx.xxxx.com.cn:40411
    java.net.UnknownHostException: flixxxx.xxxx.com.cn
    解决办法,因为 flixxxx.xxxx.com.cn 是linux 上面的 /etc/hosts 配置的,但是在本地的windows不认识:
    修改windows的 host文件,: your linux hostname flixxxx.xxxx.com.cn
     
    然后,报了新的BUG
    执行远程查询时异常,无法找到regionAu,怎么会是 regionAu
    org.apache.geode.cache.client.ServerOperationException: remote server on LAPTOP-CRM8M3CD(44864:loner):63450:15ba472c: While performing a remote query
    Caused by: org.apache.geode.cache.query.RegionNotFoundException: Region not found: /regionAu
     
    解决, 原因是代码中 OQL 语法拼接有问题,才注意到 u 前面少了个空格,改成如下即可
    select * from /"+regionName+" u where u.age>15
     
     

  • 相关阅读:
    装饰器模式
    观察者模式
    策略模式
    分析法汇总
    事后诸葛亮分析(名字好难想队)
    团队项目第六周——Alpha阶段项目复审(名字很难想队)
    团队博客(第五周)-“名字好难想”
    团队博客(第四周)-“名字好难想”
    团队博客(第三周)-“名字好难想”
    团队博客(第二周)-“名字好难想”
  • 原文地址:https://www.cnblogs.com/levi125/p/13719633.html
Copyright © 2011-2022 走看看