十次服务开发v1.第1章_第1页
十次服务开发v1.第1章_第2页
十次服务开发v1.第1章_第3页
十次服务开发v1.第1章_第4页
十次服务开发v1.第1章_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第1章-学习目标了解十次方的需求分理解十次方的系统设计以及完成基础微服务-CRUD的功能,掌握公共异常处理十次方名称的由来:2的10次方为1024,程序员都懂如果你是一位技术大咖,那么赶快发布文章,增加知名度如果你是一名技术,那么赶快到问答频道寻求帮助的,这里高手如云哦如果你不想错过各种技术交流会,那么请经常关注活动频道吧~如果你还是单身,那么赶快到交友频道找到你心仪的另一半。如果你有太多的苦恼,那么赶快吐个槽吧~如果你正在找工作或是想跳槽拿高薪,那么来招聘频道淘金吧详见:资源\文档\十次方需求规格说明书《十次方》采用前后端分离的系统架构,后端架构 我们把这种架构也称之为全家我们的十次方工程共分为18个子模块(其中17个是微服务 模块名模块中文名公共模文章微服基础微服交友微服活动微服问答微服招聘微服用户微服吐槽微服搜索微服前台微服务网微服务网中配置中微服文章爬虫微服用户爬虫微服人工智能微服我们这里采用的分库分表设计,每个业务模块为1个独立的数据tensquare_article文 tensquare_gathering活动tensquare_qa问答tensquare_recruit招聘 详见资源\文档\十次方数据库文档API课程提供了前后端开发接口文档(采用Swagr语言进行编写),并与Nin进行了整合。双击Ninx执行文件启动后,在地址栏输入即可PI前后端约定的返回码列表状态描返回成失用户名错权限不调用失重复操理解何为RESTfl架构,就是目前最流行的一种互联网软件架构。它结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多的采用。RET这个词,是RoyThmsFili在他00年的博士中.REST是RepresentationalStateTransfer的缩写,翻译是”表现层状态转化”以面向资源是RET最明显的特征,对于同一个资源的一组不同的操作。资源是服务器上一个可命名的抽象概念,资源是以名词为来组织的,首先关注的是名词。RT要求,必须通过统一的接口来对资源执行。对于每个资源只能执行一组有限的操作。7个HTTP接口规我们在项目中用到了GET/POST/PUT/DELETE四种方法,现在介绍一下这四种

变更时获取表示(缓存200(OK)表示已在响应中204(无内容)-资源有空表301(MovedPermanently)-资源的URI已被更303(SeeOther)-其他(如,负载均衡)(notmodified)-资源未更改(缓存400(badrequest)-指代坏请求(如,参数错误404(notfound)-406(notacceptable)-服务端不支持500(internalservererror)-503(ServiceUnavailable)-服务端当前无法处理不安全且不幂

部分更新资如果没有被修改,则不过更新资源(乐观锁200(OK)如果现有资源已被更改(created)-如果新资源被创 已接受处理请求但尚未完成(异步处理301(MovedPermanently)-资源的URI被更新303(SeeOther)-其他(如,负载均衡)400(badrequest)-指代坏请求404(notfound)-406(notacceptable)-服务端不支持409 )通用412(PreconditionFailed)-前置条件失败(如执行条件更新时的415(unsupportedmediatype)500(internalservererror)-503(ServiceUnavailable)-服务当前无法处理不安全但幂如果未被修改,则更新资源(乐观锁200(OK)-如果已存在资源被201(created)如果新资源被创建(MovedPermanently)-资源的URI已更改303(SeeOther)其他(如,负载均衡)400(badrequest)-指代坏请求404(notfound)-406(notacceptable)-服务端不支持409 )通用412(PreconditionFailed)-前置条件失败(如执行条件更新时的415(unsupportedmediatype)500(internalservererror)-503(ServiceUnavailable)-服务当前无法处理200(OK)-资源已被删301(MovedPermanently)-资源的URI303(SeeOther)其他,如负载均衡400(badrequest)-指代坏请求404(notfound)-资源不存在409 )通用500(internalservererror)-503(ServiceUnavailable)-服务端当前无法处理数据库mysqldocker版本VMwareWorkstationPro注:十次方课程所有的环境都是基于docker的,所以我们在资料中提供了安装了docker的centos7镜像,并已经了课程中使用的mysql等常用docker镜像。将centos7镜像挂载到VMwareWorkstation,修改内存为8G。MYSQL建库建表(容器我们的mysql使用的是docker环境(1)镜像(此步可省略dockerdockerpull创建容dockerdockerrun‐di‐‐name=tensquare_mysql‐p3306:3306MYSQL_ROOT_PASSWORD=123456SQLyog连接MYSQL,并执行建表 详见配套资测试工具Postman中文版是postman这款强大网页调试工具的windows客户端,提供功能强大的WebAPI&HTTP请求调试。软件功能非常强大,界面简洁明晰、操作方便快捷,设计得很人性化。Postman中文版能够发送任何类型的HTTP请求(GET,HEAD,POST,PUT..),课程配套资源中提供了Postman的安装文"资源\微服务相关\配套软件\Postman-win64-6.0.10-默认安装即安(2)账IDEA详 “资源\微服务相关\扩展文档\IDEA配置选择菜单file-new ,弹出窗口中左侧菜单选择 ,点击next按填写GroupId和ArtifacetId,点击next按点击Finish完删除src文件修改 添加以下配置(资源已提供 资源\配置文件 当IDEA右下角弹出提示,点击EnableAuto- 自动导入依搭建子模块搭建公共子模 (1)工程,弹出菜单选择New- 弹出窗口选择Maven,点击next按点击创建返回结果实新建entity下创建类Result,用于控制器类返回结packageentity;publicclassResult{privatebooleanflag;//是否成功privateIntegercode;//返回码privateStringmessage;//返回信息privateObjectdata;//返回数据publicResult(booleanflag,Integercode,Stringmessage,Objectdata){this.flag=flag;this.code=this.message=message;this.data=data;}publicResult()}publicResult(booleanflag,Integercode,Stringmessage){this.flag=this.code=code;this.message=message;}publicbooleanisFlag(){returnflag;}publicvoidsetFlag(booleanflag){this.flag=flag;}publicIntegergetCode(){returncode;}publicvoidsetCode(Integercode){this.code=code;}publicpublicStringgetMessage(){returnmessage;}publicvoidsetMessage(Stringmessage){this.message=message;}publicObjectgetData(){returndata;}publicvoidsetData(Objectdata){this.data=data;}}提示:IDEA生成getterandsetter的快捷键是返回码详见设计文创建类PageResult,用于返回分页@parampublicclassPageResult<T>ongist<T>publicPageResult(Longtotal,List<T>rows)this.total=total;this.rows=rows;}//getterandsetter}返回码定义packagepackage*publicclassStatusCodepublicstaticfinalintOK=20000;//成功publicstaticfinalintERROR20001;//失败publicstaticfinalintLOGINERROR=20002;//用户名或 publicstaticfinalintACCESSERROR=20003;//权限不足publicstaticfinalintREMOTEERROR=20004;// publicstaticfinalintREPERROR=20005;//重复操作}分布式ID由于我们的数据库在生产环境中要分片部署(MyCat),所以我们不能使用数据库本身的自增功能来产生主键值,只能由程序来生成唯一的主键值。我们采用的是开源的(非中文惯称:.是国外的一个,是一个社交网络及务)snowflake(雪花)算法默认情况下41bit的时间戳可以支持该算法使用到82年,10bit的工作机器id可以支持24台机器,序列号支持1毫秒产生406个自增序列id.SnwFlake的优点是,整体上按照时间自增排序,并且整个分布式系统内不会产生D碰撞(由数据中心D和机器作区分),并且效率较高,经测试,SnwFlake每秒能够产生6万ID左右我们课程中已经提供了分布式资源\微服务相关\工具类mon工程创建util包,将 直接拷贝 工程的util基础微服务-搭建基础微服务模块tensquare_base,pom.xml引入 创建启动packagepackageimportimportorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.context.annotation.Bean;import*Createdby37269onpublicclassBaseApplicationpublicstaticvoidmain(String[]args){}publicIdWorkeridWorker(){returnnew}提示:IDEA创建main方法的快捷键是在resources下创建nametensquare‐base#driverClassName:url:username:rootpassword:123456database:MySQLshow‐sql:truegenerate‐ddl:true管理-表结构分表名称字段名字段含字段类备文名文状文0:无效1:有使用数整关注整是否推文0:不推荐1:推CRUD的实(1)实体创建com.tensquare.base下创建pojo ,包下创建实体类packageimportorg.springframework.boot.autoconfigure. importjavax.persistence.Entity;importjavax.persistence.Id; publicclassLabel{privateStringprivateString privateStringstate;//状态 ongcount;//使用数量 ongfans;//关注数private publicStringgetId(){returnid;}publicvoidsetId(Stringid){this.id=id;}publicStringgetLabelname(){returnlabelname;}publicvoidsetLabelname(Stringlabelname){this.labelname=labelname;}publicStringgetState(){returnstate;}publicpublicvoidsetState(Stringstate)this.state=}publicLonggetCount()return}publicvoidsetCount(Longcount)this.count=}publicLonggetFans()return}publicvoidsetFans(Longfans)this.fans=}public}mend()publicmend)mend }}创建数据接com.tensquare.base包下创建dao下创建LabelDao接packagepackageimportimportimport*publicinterfaceLabelDao}业务逻辑com.tensquare.base包下创建service下创建LabelService类。在这个类中,我们packagecom.tensquare.base.service;importcom.tensquare.base.pojo.Label;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;importutil.IdWorker; publicclassLabelService abelDaoprivateIdWorkerpublicList<Label>findAll(){return}publicLabelfindById(Stringid){return}@parampublicvoidadd(Labellabel.setIdidWorker.nextId()+);//设置ID}@parampublicvoid label){}@parampublicvoiddeleteById(String}}控制器com.tensquare.user包下创建controller包,创建packagecom.tensquare.base.controller;importcom.tensquare.base.pojo.Label;importcom.tensquare.base.service.LabelService;importentity.Result;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.*;import publicclassLabelController{ abelService (method=RequestMethod.GET)publicResult<List>findAll(){returnnewResult<>(true,StatusCode.OK,"查询成功",labelService.findAll());}@param (value="/{id}",method=RequestMethod.GET)publicResult<Label>findById(@PathVariableStringid){returnnewResult<>(true,StatusCode.OK,"查询成}@param (method=RequestMethod.POST)publicResultadd(@RequestBodyLabellabel){returnnewResult(true,StatusCode.OK,"增加成功}

@param (value="/{id}",method=publicResultupdate(@RequestBodyLabella

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论