dubbo是一个分布式服务框架,是阿里巴巴开发的一个解决RPC远程调用优化的核心框架,包含负载均衡算法,能提高分布式系统的性能。

zookeeper是hadoop的一个子项目,主要用来解决分布式系统的数据一致性、状态同步、服务集群管理、配置同步等一系列的问题。本文使用zookeeper作为dubbo的服务注册中心。

技术细节方面:

dubbo:http://www.dubbo.io

zookeeper:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/index.html

本demo的需求是,有两个功能模块(demo而已嘛):商品、订单。这两个模块分辨要有不同的服务提供者,并且要有不同的注册中心。然后使用一个client来提供http接口,供外部访问。

本demo专注于dubbo+zookeeper的配置,所以一些数据库连接池配置、数据源配置什么的会省略掉。

需要的jar包(如果不访问数据库,mysql那个可以不用,其它一个都不能少,少了就会报错):

首先我们开发商品的服务提供者,在eclipse下新建一个web_server_goods的java project:

然后我们写一个接口OrderQueryService,代码如下:

package com.web.server.service;

import java.util.Map;

public interface OrderQueryService {

    public Map<String, Object> queryList(Map<String, Object> params);

}

该接口有一个queryList方法,用于查询订单列表

然后我们再开发一个实现类OrderQueryServiceImpl,这个类实现了OrderQueryService,代码如下:

package com.web.server.service.impl;

import java.util.List;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; import com.web.server.service.OrderQueryService;
import com.web.server.util.ServiceUtil; public class OrderQueryServiceImpl implements OrderQueryService { @Autowired
private JdbcTemplate jdbcTemplate; @Override
public Map<String, Object> queryList(Map<String, Object> params) {
String sql = "select * from t_order";
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
return ServiceUtil.getServiceResult(list, "success");
}
}

然后我们再建立一个web_server_goods的java project

写一个接口GoodsQueryService,代码如下:

package com.web.server.service;

import java.util.Map;

public interface GoodsQueryService {

    public Map<String, Object> queryGoodsList(Map<String, Object> params);

}

该接口有一个queryGoodsList方法,用于查询商品列表

然后再写一个实现类GoodsQueryServiceImpl,实现了GoodsQueryService,代码如下:

package com.web.server.service.impl;

import java.util.List;
import java.util.Map; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate; import com.web.server.service.GoodsQueryService;
import com.web.server.util.ServiceUtil; public class GoodsQueryServiceImpl implements GoodsQueryService { @Autowired
private JdbcTemplate jdbcTemplate; @Override
public Map<String, Object> queryGoodsList(Map<String, Object> params, int currentPage, int pageSize) { StringBuilder sql = new StringBuilder();
sql.append("select * from t_goods where 1=1 ");
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql.toString());
return ServiceUtil.getServiceResult(list, "success"); } }

妈的太多了,累死个人!懒得写下去了,就这样吧。

用dubbo+zookeeper+spring搭建一个简单的http接口程序的更多相关文章

  1. VS2013开发一个简单的asmx接口程序

    一.开发和调试 1:创建一个ASP.NET web应用程序 2:选择空的模板 3:系统生成项目目录 4:右键项目-添加项-新建项 5:选择Web  服务(ASMX) 6:选择之后项目中会有一个Test ...

  2. Dubbo+zookeeper+SpringMVC搭建最简单的分布式项目

    Dubbo 是什么 一款分布式服务框架 高性能和透明化的RPC远程服务调用方案 SOA服务治理方案 Dubbo 架构流程图 Provider:服务提供方 Consumer:服务消费者 Registry ...

  3. [目录]搭建一个简单的WebGIS应用程序

    “如果一件事情超过自己的能力,自己很难达到,那就像是婴儿跳高,不但没有好处,反而拔苗助长”. 4月份时报名参加了2018年ESRI杯GIS应用开发比赛,到前几天提交了作品.作品很简单,没有那么多复杂深 ...

  4. Dubbo入门介绍---搭建一个最简单的Demo框架

    Dubbo入门---搭建一个最简单的Demo框架 置顶 2017年04月17日 19:10:44 是Guava不是瓜娃 阅读数:320947 标签: dubbozookeeper 更多 个人分类: D ...

  5. SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用

    为什么要使用分布式系统? 容错 减少延迟/提高性能 可用性 负载均衡 总而言之,其实目的只有一个,”用户体验“. 什么是分布式系统? 分布式系统是由使用分发中间件连接的自治计算机组成的网络.它们有助于 ...

  6. 超详细,新手都能看懂 !使用SpringBoot+Dubbo 搭建一个简单的分布式服务

    来自:JavaGuide Github 地址:https://github.com/Snailclimb/springboot-integration-examples 目录: 使用 SpringBo ...

  7. 使用 SpringBoot+Dubbo 搭建一个简单分布式服务

    实战之前,先来看几个重要的概念 开始实战之前,我们先来简单的了解一下这样几个概念:Dubbo.RPC.分布式.由于本文的目的是带大家使用SpringBoot+Dubbo 搭建一个简单的分布式服务,所以 ...

  8. springboot搭建一个简单的websocket的实时推送应用

    说一下实用springboot搭建一个简单的websocket 的实时推送应用 websocket是什么 WebSocket是一种在单个TCP连接上进行全双工通信的协议 我们以前用的http协议只能单 ...

  9. 使用新浪云 Java 环境搭建一个简单的微信处理后台

    前一段时间,写了一篇在新浪云上搭建自己的网站的教程,通过简单构建了一个 maven 的项目,展示部署的整个流程,具体的操作可以参看这里. 新浪云服务器除了可以搭建自己的网站以外,也非常的适合作为微信公 ...

随机推荐

  1. VS2010 error C2664: “CWnd::MessageBoxW”: 不能将参数 1 从“const char [3]”转换为“LPCTSTR”

    VS2010 (VC2010)建立工程时默认的字符集是Unicode,所以在代码中使用MessageBox时需要输入Unicode,用TEXT()这个宏输入参数,否则会报错:   代码:Message ...

  2. 射频识别技术漫谈(8)——动物标签【worldsing笔记】

    动物标签也是工作在TTF模式的ID(Identification)卡.之所以通常称为动物标签,估计是因为一来和识别人的ID卡相区分,二是因为动物不如人听话,人的ID卡可以做成卡片形状拿在手上,而动物不 ...

  3. D3D游戏编程系列(六):自己动手编写第一人称射击游戏之第一人称视角的构建

    说起第一人称射击游戏,不得不提第一人称视角啊,没有这个,那么这个第一就无从谈起啊,我作为一个观察者究竟如何在这个地图上顺利的移动和观察呢,那么,我们一起来研究下. 我们首先来看下CDXCamera类: ...

  4. oracle表数据误删还原

    首先,找到数据删除前的一个时间点. select timestamp_to_scn(to_timestamp('2013-10-12 8:30:00', 'YYYY-MM-DD HH24:MI:SS' ...

  5. 强烈推荐android studio用的几个插件,androidstudio

    不懂安装studio插件,看参考博文:android stuido插件安装:http://blog.csdn.net/liang5630/article/details/46372447 1.Butt ...

  6. ubuntu下查看文件md5

    终端输入md5sum --help: md5sum --help用法:md5sum [选项]... [文件]...显示或检查 MD5(128-bit) 校验和.若没有文件选项,或者文件处为" ...

  7. 【转】使用junit4进行单元测试(高级篇)

    转自:http://blog.csdn.net/andycpp/article/details/1329218 通过前 2 篇文章,您一定对 JUnit 有了一个基本的了解,下面我们来探讨一下JUni ...

  8. 连载:面向对象葵花宝典:思想、技巧与实践(32) - LSP原则

    LSP是唯一一个以人名命名的设计原则,并且作者还是一个"女博士"  ======================================================== ...

  9. ios项目开发(天气预报项目):通过经纬度获取当前城市名称

     1 . 在项目里加入� CoreLocation.framework 2 .在 .h 文件输入例如以下: 1.#import <CoreLocation/CLLocation.h> ...

  10. iOS 10 升级后无法真机测试 Could not find Developer Disk Image

    ---2016年9月20日更新 iOS 升级到10之后,你会发现无法进行真机测试了.这种情况我在iOS 8.4 .9.3更新的时候也遇到过.原因是Xcode 的DeviceSupport里面缺少了iO ...