传统项目:java
传统项目的业务逻辑相对更加复杂。由于更多的是公司内网操做。共享少,可参考的项目少linux
互联网项目git
瀑布模式:程序员
从1-5依次执行开发步骤,前面的执行完毕才执行下面的步骤。比较浪费人力资源。耗费时间。公司通常不采用github
敏捷开发:web
每一步骤完成一部分即开启下一步骤。保证了每一个过程当中人员的充分利用。算法
迭代周期每部分完成所须要的时间称为一个迭代周期。西安地区通常为14天。spring
单一应用架构数据库
缺点:全部代码在一块儿,难于维护,启动慢,性能低spring-mvc
垂直架构(MVC思想)
将原来单一架构中,具备相同功能的模块独立起来,放在不一样的项目中。造成几个垂直关系的架构。
缺点:这些项目之间不通讯。代码仍然冗余
RPC:远程过程调用
垂直架构再细分,而且项目间通讯
缺点:服务的提供方,被服务消费方调用。在消费方维护服务提供方的(ip:端口/路径),当提供方发生变化,消费方也须要修改代码来应对。耦合大
SOA:面向服务
注册中心,服务治理。
dubbox就是个服务框架,若是没有分布式的需求,实际上是不须要用的,只有在分布式的时候,才有dubbox这样的分布式服务框架的需求,而且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。
Provider: 暴露服务的服务提供方。(Service)
Consumer: 调用远程服务的服务消费方。(Controller)
Registry: 服务注册与发现的注册中心。(Dubbo)
Monitor: 统计服务的调用次调和调用时间的监控中心。(能够在安装Dubbo的Linux系统的TomCat中配置服务器监控项目以管理Dubbo)
Container: 服务运行容器。
调用关系说明
长链接:每次通讯完毕后,不会关闭链接,这样就能够作到链接的复用。长链接的好处即是省去了建立链接的耗时。
心跳事件:客户端会开启一个定时任务,定时对已创建链接的对端应用发送心跳请求,服务端则须要特殊处理该请求并给出响应。若是长时间没有响应。客户端会断开链接
短链接:每次通讯时,建立 Socket;一次通讯结束,调用 socket.close()。这就是通常意义上的短链接,短链接的好处是管理起来比较简单,存在的链接都是可用的链接,不须要额外的控制手段。
官方推荐使用 zookeeper 注册中心。注册中心负责服务地址的注册与查找,至关于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变动推送,适合做为Dubbox 服务的注册中心,工业强度较高,可用于生产环境。
这里我把zk安装在/usr/local/zookeeper下。
linux下编辑文件
开启zk服务: ./zkServer.sh start
查看zk服务状态; ./zkServer.sh status
关闭zk服务: ./zkServer.sh stop
复制代码
注意:安装部署好zk后,关闭虚拟机时选择挂起,不要直接关闭。下次启动虚拟机就不须要再手动启动服务了
直接拷贝项目所需的完整仓库。并在本地mvn的配置文件中配置阿里云私服
用来给IDE添增强大的提示功能,IDEA好像自己很强大不须要。实际因为4.2版本可能比较旧。须要手动添加,下面有方法
配置成仅主机模式,且IP第三段设置成25,方便后期使用。DFS
配置完成后,开启Linux,启动zk服务。
Service编写:
建立Maven项目,打包方式war。导入spring、dubbo相关依赖坐标。导入tomcat插件,设置端口8081
建立service包,Service接口,实现类及其中的方法。Sevice方法上加上@Service注解
import com.alibaba.dubbo.config.annotation.Service;
// 注意:此Service必须是Dubbo提供的Service
@Service
public class ShowServiceImpl implements IShowService {
复制代码
配置web.xml。加载Spring容器
配置applicationContext.xml文件。添加Dubbo相关约束和命名空间。配置Dubbo链接
<!--配置服务名-->
<dubbo:application name="dubbodemo-service"/>
<!--配置注册中心,IP,端口-->
<dubbo:registry address="zookeeper://192.168.25.128:2181"/>
<!--扫描@Service注解-->
<dubbo:annotation package="cn.keats.dubbodemo.service" />
复制代码
测试运行:推荐使用IDEA MAVEN HELPER 插件启动服务器。 file --> settings --> plygins --> 检索并安装 maven helper 重启IDEA
Controller编写
建立maven项目,打包依旧war,导入坐标。设置tomcat端口 8082 和Service保持不一致,避免端口冲突
建立controller包,拷贝Service接口,远程注入Service接口。写方法,加上@RequestMapping(映射路径) @ResponseBody(设置响应的字符串用做显示而不是用做跳转的页面路径)
配置web.xml 配置post请求乱码处理,配置DispacherServlet
<!-- 解决post乱码 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 指定加载的配置文件 ,经过参数contextConfigLocation加载-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-web.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
复制代码
配置spring-mvc核心配置文件,而且配置Dubbo链接。注意:这里由于Service接口是从Service项目拷贝过来的,要求包路径一致
启动测试。若是服务超时未链接,能够尝试访问Tomcat服务器。有多是防火墙阻止了系列请求。关闭防火墙便可