1-项目环境搭建与AngulaJs入门

发布于 2022年 05月 02日 12:38

腾讯服务器

88 / 年

  • 上海/北京/广州...
  • 2核 2G 4M
  • Linux/Windows
新年大优惠

腾讯服务器

425 / 年

  • 上海/北京/广州...
  • 4核 8G 10M
  • Linux/Windows
年度最便宜

腾讯服务器

1249 / 年

  • 上海/北京/广州...
  • 8核 16G 14M
  • Linux/Windows
点击查看

项目类型

  1. 传统项目:

    • oa:办公自动化
    • 财务/股票分析
    • crm
    • erp

    传统项目的业务逻辑相对更加复杂。因为更多的是公司内网操作。共享少,可参考的项目少

  2. 互联网项目

    1. 特点
      • 用户多
      • 并发高
      • 数据量大
    2. 用户体验
      • 快(我们主要解决的问题)
      • 好看(UI)
      • 功能完整性(业务)

主要电商模式

  • B2B:企业对企业:阿里最开始的业务,慧聪网
  • B2C:企业对个人:直接面向消费者销售产品和服务商业零售模式,主要借助于互联网开展在线销售活动。如:唯品会,当当网
  • O2O:线上到线下:线上销售,线下服务。如:美团、饿了么
  • B2B2C:企业对企业对个人:第一个B代表商品/服务的供应商(如淘宝店家)第二个B代表从事电子商务的的企业(淘宝平台)C则指的是顾客。我们所作的品优购就是一个B2B2C项目。

项目开发步骤

  1. 需求分析:需求分析师/产品经理
  2. 设计:架构师
    1. 数据库、表设计
    2. UI、UE
    3. 架构设计
  3. 编码:程序员(占项目周期的40%)
  4. 测试:测试工程师
  5. 运维:运维工程师

开发模式

瀑布模式:

​ 从1-5依次执行开发步骤,前面的执行完毕才执行下面的步骤。比较浪费人力资源。耗费时间。公司一般不采用

敏捷开发:

​ 每一步骤完成一部分即开启下一步骤。保证了每个过程中人员的充分利用。

​ 迭代周期每部分完成所需要的时间称为一个迭代周期。西安地区一般为14天。

系统架构演变

)

  1. 单一应用架构

    缺点:所有代码在一起,难于维护,启动慢,性能低

  2. 垂直架构(MVC思想)

    将原来单一架构中,具有相同功能的模块独立起来,放在不同的项目中。形成几个垂直关系的架构。

    缺点:这些项目之间不通信。代码仍然冗余

  3. RPC:远程过程调用

    垂直架构再细分,并且项目间通信

    缺点:服务的提供方,被服务消费方调用。在消费方维护服务提供方的(ip:端口/路径),当提供方发生变化,消费方也需要修改代码来应对。耦合大

  4. SOA:面向服务

    注册中心,服务治理。

品优购架构分析

Dubbo框架

dubbox就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbox这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架。

节点角色说明

​ Provider: 暴露服务的服务提供方。(Service)

​ Consumer: 调用远程服务的服务消费方。(Controller)

​ Registry: 服务注册与发现的注册中心。(Dubbo)

​ Monitor: 统计服务的调用次调和调用时间的监控中心。(可以在安装Dubbo的Linux系统的TomCat中配置服务器监控项目以管理Dubbo)

​ Container: 服务运行容器。

调用关系说明

  1. 服务容器负责启动,加载,运行服务提供者(Service)。
  2. 服务提供者在启动时,向注册中心注册自己提供的服务(需要配置:服务名称+DubboIP+端口+包扫描)。
  3. 服务消费者在启动时,向注册中心订阅自己所需的服务。
  4. 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
  5. 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
  6. 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。

长连接:每次通信完毕后,不会关闭连接,这样就可以做到连接的复用。长连接的好处便是省去了创建连接的耗时。

​ 心跳事件:客户端会开启一个定时任务,定时对已建立连接的对端应用发送心跳请求,服务端则需要特殊处理该请求并给出响应。如果长时间没有响应。客户端会断开连接

短连接:每次通信时,创建 Socket;一次通信结束,调用 socket.close()。这就是一般意义上的短连接,短连接的好处是管理起来比较简单,存在的连接都是可用的连接,不需要额外的控制手段。

注册中心Zookeeper

官方推荐使用 zookeeper 注册中心。注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。

Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbox 服务的注册中心,工业强度较高,可用于生产环境。

Linux下安装zk

​ 这里我把zk安装在/usr/local/zookeeper下。

​ linux下编辑文件

开启zk服务:	 	 ./zkServer.sh start
查看zk服务状态;	./zkServer.sh status
关闭zk服务:		 ./zkServer.sh stop

注意:安装部署好zk后,关闭虚拟机时选择挂起,不要直接关闭。下次启动虚拟机就不需要再手动启动服务了

Dubbox本地jar包的部署与安装

直接拷贝项目所需的完整仓库。并在本地mvn的配置文件中配置阿里云私服

配置DTD约束

用来给IDE添加强大的提示功能,IDEA好像本身很强大不需要。实际由于4.2版本可能比较旧。需要手动添加,下面有方法

Linux网络配置

配置成仅主机模式,且IP第三段设置成25,方便后期使用。DFS

配置完成后,开启Linux,启动zk服务。

Dubbo入门小Demo

  1. Service编写:

    1. 创建Maven项目,打包方式war。导入spring、dubbo相关依赖坐标。导入tomcat插件,设置端口8081

    2. 创建service包,Service接口,实现类及其中的方法。Sevice方法上加上@Service注解

      import com.alibaba.dubbo.config.annotation.Service;
      // 注意:此Service必须是Dubbo提供的Service
      @Service
      public class ShowServiceImpl implements IShowService {
      
    3. 配置web.xml。加载Spring容器

    4. 配置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" />
      
    5. 测试运行:推荐使用IDEA MAVEN HELPER 插件启动服务器。 file --> settings --> plygins --> 检索并安装 maven helper 重启IDEA

  2. Controller编写

    1. 创建maven项目,打包依旧war,导入坐标。设置tomcat端口 8082 和Service保持不一致,避免端口冲突

    2. 创建controller包,拷贝Service接口,远程注入Service接口。写方法,加上@RequestMapping(映射路径) @ResponseBody(设置响应的字符串用作显示而不是用作跳转的页面路径)

    3. 配置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>
      
  3. 配置spring-mvc核心配置文件,并且配置Dubbo连接。注意:这里因为Service接口是从Service项目拷贝过来的,要求包路径一致

  4. 启动测试。如果服务超时未连接,可以尝试访问Tomcat服务器。有可能是防火墙阻止了系列请求。关闭防火墙即可

Dubbo管理中心的部署

  1. 拷贝服务端war包到Linux tomcat 服务器 webapp目录下,tomcat自动发布项目
  2. 访问:ip:8080/dubbo-admin 账号root 密码 root 来管理Dubbo

推荐文章