就开发语言来说,学JAVA是很不错的,可以说是主流,最近很火的安卓也是基于JAVA的;就JAVA开发这个行业来说的话,优势就是待遇高,普通开发人员月薪拿个4K~5K是很正常的事情,劣势就是太辛苦,经常会加班,而且都是那种加班到很晚的,可以说是用命换钱吧
背景
随着公司一年多的成长,我们已经开发了数十个项目了,后台有JAVA的有PHP的,为了更好地提升开发与管理效率,各技术大牛小牛们时常进行激烈的PK,碰撞出了许许多多爱的火花,比如其中之一:微服务实践
设计
只需要有一套BASE微服务,BASE微服务生成业务系统微服务实例,供各个业务系统调用;业务系统不直接调用BASE,只能调用微服务INSTANCE。
这是运维的问题,让运维去解决,运维使用工具,实际也不算困难,反正执行的都是脚本,不需要手工 *** 作。
单点故障影响全局,我们选择了稳定更重要;另外saas的话,为了应对不同行业,会存在过度设计的嫌疑;私有化更容易。
调用逻辑
设计理念
非模块化,谈不上微服务,比如我们上面的用户微服务、产品微服务、地址微服务等,都需要先模块化,为了更好地落实开发,你可能不得不,边模块化边微服务,模块化的时候要注意,不能有关联查询,包要完全独立,到时候微服务才能拆开。
松耦合表示我们模块之间不直接依赖,无状态,可以单独地为外界提供服务;
强内聚是指,我们虽然要拆分成一个个小的微服务,但是也要考虑某些功能的强关联性,比如一个凳子是由四个脚与一个板组成,我们不能把四个脚与板分开售卖,就没有意义了。
开发
spring-boot :较springmvc更加简约了,springmvc有一大零的配置文件,比如spring-servlet、spring-mybatis、springxml与webxml,这些在spring-boot都不需要了,只需要强大的注解功能即可,boot更合适微服务。
spring-cloud :里面有比较多组件,用于支持微服务,比如spring cloud config统一配置中心,用于多环境的配置文件配置,大家再也不用为多个微服务的开发、测试与生产环境的配置文件管理而发愁了;spring cloud eureka用于服务注册与发现,下面有单独介绍;其它的组件大家可以去官网看看,这里不一一介绍,总之如果JAVA平台,尽量使用spring体系的内容。
我们采用mysql,因为我们是应用多,但数据量单表并不算大,多则不超过百万,mongodb也实验过,开发非常快,也非常灵活,但因为不是关系型数据库,维护成本较高。
RESTFUL :URL的资源与 *** 作解耦,让URL更加符合语义,上百个接口也非常好管理,网上有很多文章讲得非常透彻,这玩意不是特别好理解,要多领悟,在项目中实践,就有矛塞盾开的感觉,这里不做详细介绍。
接口文档swagger :比起传统全手工写接口文档,swagger有统一的输出格式,不管是几个人写的;swagger采用写代码的方式来写接口文档,以前修改了代码,还必须打开wiki手工修改接口文档,现在只需要修改一下代码即可,程序员更愿意修改了,成本更低了,前端与其它调用者不会天天吼着,你这接口咋又变了,新加的字段是啥意思呀。
RocketMQ:一直纠结kafka与rocketMQ,最终选择了RocketMQ
为了性能上面的考虑,尽量使用异步编程,比如注册送优惠券,那么注册成功就可以给用户返回注册成功了,但是送优惠券可以是异步调用的,不阻塞注册的线程。
微服务框架下,日志不可能还分散在各个服务节点上,必须有统一的日志中心。ELK是一个实时日志分析平台,就是将各个服务的日志汇总于日志中心,然后可以按照系统、节点等进行搜索,除上述搜索条件外,我们还在各个微服务实现了按照业务id(一次请求生成一个业务id)与用户id搜索日志,方便跟踪与定位问题。
当然可能有更加轻量级与好用的disconf或spring cloud config,但是我们有php开发的应用,以上二者都不支持。如果全是JAVA应用,采用disconf还是非常不错的。
测试
每个程序员都有这样的经历,刚上线,客户又反馈了bug,原来是我们修改某个功能代码的时候,导致了其它功能的bug,每次上线心里都没底;这就体现了接口测试的必须性,尤其是每次版本升级的时候,都需要执行一遍,以防修改某个接口导致其它接口报错,比手动测试靠谱许多。
部署
docker已经家喻户晓了,这是继虚拟机以后,又一重大变革,将所有的单个微服务都放在docker中,这样你何时何地想部署,直接丢过去就OK了,快到爆。
用几句简单的命令就搞定了负载均衡,而且还可以平滑升级,版本升级的时候,大家就不用告诉客户:系统通知,某日某晚00:00-08:00我行处于系统升级维护中,大家不要去取钱哦,因为你可能取不出来,呵呵。
升级
我们采用工具flyway,可以对数据库脚本进行版本控制。
传统的版本升级,
1开发推代码并同时记录自己提交了哪些文件;
2项目经理根据svn审核文件,并打包成war包;
3投到测试环境让测试公司测试;
4中途修改了文件,可能需要重新打包;
…
我都写不下去了,项目经理像个超人似的。
现在用持续集成(CI)非常简单,我们用的工具是Jenkins,推完代码,点几下按钮就完成了上线,不管是测试环境,还是生产环境都非常简单,不然项目经理核对文件眼睛都绿了。
结尾
本文主要是介绍微服务开发上的选型,对于细则不做深究,大家感兴趣可以了解下各个组件。当然,我们的选型未免正确,不同场景应用可能完全不同,本文仅供参考。
1、找同行,一般公司都会有功能组件外包给私人做(阿里,华为,百度都有)
2、猪八戒类的威客网站(收入还可以,建议接几个任务后去接招标的单子)
3、自己开发游戏辅助软件或者某个行业的小软件,目前电商行业的比较好做,不过要求你有足够的了解(辅助软件靠广告赚钱稳定,行业工具就直接卖吧)
百度知道
京东虚拟卡容易火爆怎么解决
查看全部4个回答
批判专家刘老师
超过98用户采纳过TA的回答
咨询成为第6位粉丝
解决方法:1、京东出现“活动火爆中,一会再来吧”,可以刷新当前页面,也可以切换浏览器再进入活动页面。
2、可以使用手机进入活动页面,也可以切换网络再尝试进入活动页面。
京东常见使用问题:1、京东钱包是京东官方推出的第三方在线支付平台,使用京东钱包需要安装安全控件,可以有效保护用户的账号安全,防止病毒程序窃取密码和用户信息,安全控件支持市面上大多数浏览器,包括IE浏览器
、Chrome、Safari、360浏览器
、QQ浏览器、搜狗浏览器
。
2、如果退换货运费险理赔成功,可以在电脑端登录京东账户,点击“我的京东”——“资产中心”,找到小金库,查看到账情况,手机APP
可以进入个人主页,点击“京东小金库”查看。如果用户没有开通小金库功能,京东会向你的手机发送一条短信,点击短信中的链接,按照提示 *** 作即可开通小金库。
3、如果商品买错了,可以提交售后申请,客服人员会告知你如何处理,不方便收货,可以联系快递员申请延长收货
,如果收货方式选择的是“上门自提”,可以联系自提点延长收货。
4、申请了退货,但是一直没有收到退款,可能是退货申请还没有审核完毕,可以在电脑端登录京东账号,点击“我的京东”——“返修退换货”,找到“返修/退换货记录”查看审核进度。
5、一些商品支持“自提”,可以在订单结算页面选择“上门自提”,系统会自动显示附近的自提点,可以通过地图查看自提点的详细位置,也可以在京东官网帮助中心搜索自提点位置。
6、在订单结算页面无法使用优惠券,可能是商品不满足优惠券使用条件,还有可能是优惠券过期。
前程卡权益包怎么用没用过
当前程卡权益包可以在程序员官网上购买,购买后可以在程序员官网上使用,比如可以获得优惠券、免费课程、免费礼品等优惠。也可以在程序员官网上参加活动,获得更多福利。
最近几年,前后端分离的思想主键深入,客户端浏览器形成大前端,技术架构上逐渐的从传统的后台MVC
向RESUFUIAPI前端MV迁移,前端项目通过RESTful服务获取数据,RESTfulAPI就是前后端的边界和桥梁。
前后端分离的好处是前端关注页面展现,后端关注业务逻辑,分工明确,职责清晰,前端工程师和后端工程师并行工作,提高开发效率。
以上就是关于PHP程序员都是用什么软件编程的(php程序员是做什么的)全部的内容,包括:PHP程序员都是用什么软件编程的(php程序员是做什么的)、微服务架构实践 - 你只懂docker与spring boot就够了吗、程序员如何赚外快_程序员怎么赚外快等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)