• ABC
    2019-05-15
    整理了一下需要使用到的命令:



    获取镜像:

    docker pull zookeeper:3.5
    运行:

    docker run --name zookeeper -p 2181:2181 -d zookeeper:3.5
    操作:

    在docker中进入zookeeper命令行;
    docker exec -it zookeeper bash
    进入zookeeper的bin目录:
    cd bin
    使用zookeeper client访问zookeeper服务:
    ./zkCli.sh
    查看
    ls /
    查看所有services:
    ls /services
    查看waiter-service的信息:
    ls /services/waiter-service
    根据[id]查看相关服务的详细信息(id是动态的):
    ls /services/waiter-service/[id]
    示例:

    ls /services/waiter-service/54ef0739-0627-478f-ad5a-4b7287854da4
    获取相关服务的详细信息(id是动态的):
    get /services/waiter-service/[id]
    示例:

    get /services/waiter-service/54ef0739-0627-478f-ad5a-4b7287854da4
    获取相关服务的详细信息(id是动态的):
    get /services/customer-service/[id]
    示例:

    get /services/customer-service/9df270b5-637a-451e-b69c-14f222f4cf3a
    展开
    
     2
  • 白马度和
    2019-08-16
    zookeeper副本不建议超过7个,不让复制成本太大。
    
     1
  • 远东通信-应用软件
    2019-07-31
    zookeeper服务端使用3.4.x版本的话需要修改pom文件,排除<exclusions>
                    <exclusion>
                        <groupId>org.apache.zookeeper</groupId>
                        <artifactId>zookeeper</artifactId>
                    </exclusion>
                </exclusions>
    重新添加zookeeper 3.4.x版本就不会报错了
    展开
    
     1
  • 鱼筱雨
    2019-11-06
    老师,我导入你的项目后,log.info()打印信息的地方;
    log报红,是不是哪里定义了log的全局变量?我这里为什么没有生效?

    作者回复: 加了@Slf4j注解,用了Lombok,你可以回到课程前面看看第一个答疑视频。IDEA中需要安装Lombok插件。

    
    
  • 极客-月
    2019-07-11
    Sleep extension too large (1050). Pinning to 500
    Opening socket connection to server 127.0.0.1/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error)
    Socket connection established to 127.0.0.1/127.0.0.1:2181, initiating session
    Client session timed out, have not heard from server in 30001ms for sessionid 0x0, closing socket connection and attempting reconnect
    Sleep extension too large (1500). Pinning to 500
    Opening socket connection to server 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181. Will not attempt to authenticate using SASL (unknown error)
    Socket connection established to 0:0:0:0:0:0:0:1/0:0:0:0:0:0:0:1:2181, initiating session
    Client session timed out, have not heard from server in 30001ms for sessionid 0x0, closing socket connection and attempting reconnect

    丁老师, waiter-server 已经正常注册,但是customer-server启动时无法访问,一直循环报这个
    展开
    
    
  • SirNicholas
    2019-07-05
    D:\geektime-spring-family\Chapter 12\zk-waiter-service\src\main\java\geektime\spring\springbucks\waiter\WaiterServiceApplication.java
    这个类启动报拒绝连接错误,快来人解决一下啊。

    作者回复: 请问启动报了什么错呢?连什么东西拒绝连接了?是不是你本地ZK没启动呀

     1
    
  • SirNicholas
    2019-07-05
    java.net.ConnectException: Connection refused: no further information
    百度说三种可能:
    1 网络不通,端口不可用等;
    2 zookeeper服务程序未正常启动;
    3 防火墙未关闭;
    我都解决了。但是还是报这个错误,对着视频步骤复制的。希望能有人帮我早点解决,真的怒了
    展开
     1
    
  • Longerian
    2019-06-28
    老师,我在24日提了一个问题,我看你把他列出来了,但没有回复,因为我的问题前面铺垫比较长,是不是没看到最后的问题呢?😂

    作者回复: 前面回答了,我隔一段时间处理一次留言,所以回答不一定及时,抱歉

    
    
  • Longerian
    2019-06-24
    把zk-waiter-service 扩展了一下,CoffeeOrderController 提供获取订单列表的接口:

    @GetMapping(value = "/", produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
        @ResponseBody
        public List<CoffeeOrder> listOrder() {
            log.info("List order");
            List<CoffeeOrder> order = orderService.list();
            return order;
        }

    CoffeeOrderService 提供了实现:

        public List<CoffeeOrder> list() {
            return orderRepository.findAll(Sort.by("id"));
        }

    zk-customer-service 在按id查询一个订单后,再执行一下查询所有订单的接口:

        private void queryAllOrder() {
            ParameterizedTypeReference<List<CoffeeOrder>> ptr = new ParameterizedTypeReference<List<CoffeeOrder>>() {};
            ResponseEntity<List<CoffeeOrder>> list = restTemplate.exchange("http://waiter-service/order/", HttpMethod.GET, null, ptr);
            list.getBody().forEach(o -> log.info("itr order: {}", o));
        }

    问题来了,获取订单列表的时候,每个订单输出的信息并没有包含具体的咖啡信息(可以看到下面items字段都是null):

    itr order: CoffeeOrder(id=1, customer=Lily, items=null, state=INIT, createTime=Mon Jun 24 15:12:21 CST 2019, updateTime=Mon Jun 24 15:12:21 CST 2019)
    itr order: CoffeeOrder(id=2, customer=Lily, items=null, state=INIT, createTime=Mon Jun 24 15:14:26 CST 2019, updateTime=Mon Jun 24 15:14:26 CST 2019)
    itr order: CoffeeOrder(id=3, customer=Li Lei, items=null, state=INIT, createTime=Mon Jun 24 15:16:48 CST 2019, updateTime=Mon Jun 24 15:16:48 CST 2019)

    看WaiterServiceApplication输出的日志,可以看到并没有执行关联查询查具体的coffee信息:

    Hibernate:
        select
            coffeeorde0_.id as id1_1_,
            coffeeorde0_.create_time as create_t2_1_,
            coffeeorde0_.update_time as update_t3_1_,
            coffeeorde0_.customer as customer4_1_,
            coffeeorde0_.state as state5_1_
        from
            t_order coffeeorde0_
        order by
            coffeeorde0_.id asc

    这是为什么呢?我自己新建工程重写一遍也是如此,同样的代码逻辑,按照本章之前的教程做下来、不做服务化改造的时候都是正常的。
    展开

    作者回复: Hibernate有懒加载,你设置eager模式把懒加载关了,就能直接把集合也加载出来了。

    
    
  • mickey
    2019-06-04
    请问,服务注册不上去是怎么原因? Zookeeper里没有services目录。谢谢。

    作者回复: 是不是没连上ZK呢?看看配置的地址对不对。

    
    
  • WL
    2019-05-11
    老师再请教一下, 我这边zk用的是3.4.10的版本, 项目启动报错Caused by: org.apache.zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for /services/waiter-service/113ec288- 查到是zk版本不对, 后来换成3.5的版本就可以了, 想问下老师在项目依赖中怎么看zk客户端适用的zk版本, 比如项目中spring-boot-actuator 2.1.4.RELEASE我怎么能知道这个客户端适用的zk版本

    作者回复: 看Maven依赖的版本,我IDE里装了MavenHelper插件可以图形化地看到依赖,你也可以用mvn dependency:tree命令打印所有依赖

    
    
  • WL
    2019-05-11
    老师请问一下多机房的zk脑列问题影响比较大这一点是像阿里那篇文章说的成为孤岛的机房同机房的服务无法调用吗, 还有其他问题吗? dubbo本身在消费者端有缓存生产者信息, 服务调用时也不用通过zk, 服务还可以调用, 所以我好像没看出来在dubbo中多机房部署zk有啥更严重的问题.

    作者回复: 那文章的意思就是服务注册中心本身不应该造成服务不可用,因此像ZK造成服务不通是不允许出现的情况。Dubbo的确是在本地有缓存,但在ZK出问题时,另一个机房的服务和本机房ZK断了,它可能会认为大量服务节点下线了,情况也比较复杂,所以尽量还是别跨机房部署吧,更何况哪怕一个机房里都有可能有网络问题……

    
    
我们在线,来聊聊吧