严格意义上说,所有软件的第三方服务都可以自己开发,不过从零到一是需要时间和金钱成本的。就像我们研发芯片,投入了巨大的成本,但仍然没有取得理想的成绩,有些事情并不是一朝一夕,投机取巧就能完成的。
Java 后端开发通常会涉及到很多第三方服务,那么都有哪些成熟的方案可供直接上手使用呢?
1)IaaS
IaaS 的英文全称是 Infrastructure as a Service,即基础设施服务,指把 IT 基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。IaaS 可根据需求快速纵向扩缩,用户无需购买和管理自己的实体服务器和其他数据中心基础结构,从而避免了相应的开支和复杂操作。
用户通过 IaaS 可以完成的典型事项包括:
- 测试和开发。
- 网站托管。
- 存储、备份和恢复。
- Web 应用。
- 高性能计算。
- 大数据分析。
基本上所有的云服务商都提供了 IaaS 服务,国内最强大的云服务商当属阿里云。
2)PaaS
PaaS 的英文全称是 Platform as a Service,只需要提交代码到指定运行环境,代码打包、部署、IP 绑定都由平台完成。
与 IaaS 相比,用户不需要管理与控制云端基础设施(包含网络、服务器、操作系统或存储),但需要控制上层的应用程序部署与应用托管的环境。
3)SaaS
SaaS 的英文全称是 Software as a Service,用户在这种模式下,不需要经过传统的安装步骤就可以通过网络使用软件。SaaS 最大的特色在于软件本身并没有被下载到用户的硬盘,而是存储在提供商的云端或者服务器。
怎么区分 IaaS、PaaS 和 SaaS 呢?来看下面这张图。
如果我们开发了一个网站,按照传统的方式,我们需要买专业的服务器(连接网络),并在上面安装服务器软件,然后再把编写好的网站部署上去。
如果采用 IaaS 服务的话,就不需要自己购买服务器了,直接在租用的云服务器上安装服务器软件并且部署网站即可。
如果采用 PaaS 服务的话,不需要购买服务器,也不需要安装服务器软件,只需要部署网站即可。
如果采用 SaaS 服务的话,网站也不需要自己开发了,直接使用服务商开发好的网站,后期的升级、维护都交由服务商来负责。
阮一峰的网络日志上这样解释三者之间的关系。假如你想做披萨生意,有三种方案。
方案一,IaaS。
他人提供厨房、炉子、煤气,你使用这些基础设施,来烤你的披萨。
方案二,PaaS。
除了基础设施,他人还提供披萨饼皮。你只需要把自己的配料洒在饼皮上,至于是牛肉味的还是奥尔良鸡翅味的,你来决定。
方案三,SaaS。
他人直接做好了披萨,你拿到手就是一个成品。你要做的就是把披萨卖出去,最好印上自己的 Logo。
4)域名
有了可以提供服务的应用后,还需要一个能够让人记得住的域名,最好越简单越好。拿维基百科来说,wikipedia.org 是一个域名,和 IP 地址 208.80.152.2 相对应,用户可以直接访问 wikipedia.org 来代替 IP 地址,域名系统(DNS)会将域名转化成便于机器识别的 IP 地址。
有一段时间,域名炒得很厉害,就像炒楼盘一样。我有个大学同学就屯了不少域名,不过最终都没有卖出去。
小米联合创始人黎万强之前在微博上确认了小米域名(mi.com)的交易价格,360 万美元,约合人民币 2243 万元左右。雷军直呼“贼贵”!
我是通过腾讯云买的域名。
http://www.itwanger.com/
it 即 information technology,wanger 就是“沉默王二”中“王二”的拼音。不过说真的,后悔买 .com 了,年费有点贵,应该换成冷门的域名,比如说 .top,太穷了我。
5)CDN
CDN 的全称是 Content Delivery Network,即内容分发网络,一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、影片、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。
比较有名的 CDN 服务商有:
- Cloudflare,提供的免费版解决方案足以保护小网站免受 DDoS 之灾,也可以隐藏网站的真实 IP 地址。在海外有着极好的响应速度,国内好像不咋滴。
- 腾讯云,资源储备遍布全球 50+ 国家与地区,全网带宽 120Tbps+。国内 1100+ 加速节点,覆盖移动、联通、电信及十几家中小型运营商。
- 阿里云,全球 2800+ 节点,130T 带宽能力,六大洲覆盖,国内主流运营商支持。
- 七牛云,全球 2000 节点,20+ 运营商覆盖,访问提速 80%,应用场景包括音视频点播、大文件下载、Web 加速服务等。
- 又拍云,全球 1100+ 节点,10Tbps 带宽储备,国内主流运营商支持。
我个人在做网站的时候,喜欢用 BootCDN 来加速 CSS 和 JavaScript,记忆里简介上说是又拍云和 Bootstrap 中文网合作的,现在看是猫云——不知道发生了什么。
6)邮件发送
基本上每个应用都离不开邮件发送,最常用的邮件服务器就是腾讯邮箱和网易邮箱。常用的电子邮件协议包括 SMTP、POP3 和 IMAP,不过,邮件的创建和发送只需要用到 SMTP 协议就可以了。
Java 官方提供了对电子邮件协议封装的 Java 类库,就是 JavaMail,但并没有包含在标准的 JDK 中,GitHub 地址如下:
https://javaee.github.io/javamail/
记得之前接到过这样一个需求,要求发送的邮件不能到垃圾邮箱里,还挺难做的。因为邮件服务器,比如说腾讯和网易,都做了邮件的过滤器,会识别一些邮件,自动放到垃圾邮箱里。
7)短信发送
使用短信发送验证码几乎是每个应用必不可少的一部分,仿佛手机号码就代表了一个人,所以丢手机是一件非常危险的事情——需要立即挂失。
短信是需要运营商支持的,所以基本上都需要依赖第三方代理。市面上有很多短信网关代理,阿里云通信是比较常用的一个,以前叫阿里大于。
阿里云通信的价格是每条短信 0.036 元,市面上还有一些其他的服务商,有些价格更低,但稳定性我个人没有测评过。我的技术交流群里就潜藏了不少做短信的商户人员。
应用接入阿里云通信并不复杂,我之前在 CSDN 上分享过一个博客,很详细,图文并茂,还带源码实例,需要的小伙伴可以去围观下。
https://qingmiaogu.blog.csdn.net/article/details/78751698
8)消息推送
消息推送(Push)指运营人员通过自己的产品或第三方工具对用户移动设备进行的主动消息推送。用户可以在移动设备锁定屏幕和通知栏看到 push 消息通知,通知栏点击可唤起 APP 并去往相应页面。
移动应用上,推送已经成为一个标配功能。
iOS 在系统层面与苹果 APNs(Apple Push Notification service)服务器建立连接,应用通过观察者模式向 iOS 系统注册关注的消息,系统收到 APNs Server 消息后转发到相应的应用程序。
Android 的 C2DM(Android Cloud to Device Messaging)采取与 iOS 类似的机制,都是由系统层面来支持消息推送,但是由于 Google 的服务在国内不能稳定的访问,此方案对于国内用户来说基本是无法使用的。
鉴于 Android 平台 C2DM 推送的不可用性,国内涌现出大量的第三方推送服务提供商,目前应用最为广泛的第三方推送服务提供商包括个推、极光、友盟、小米、华为、BAT 等,我之前用个推做过一个小程序的推送 Demo,API 调用起来很简单,感觉还挺好用的。
消息推送有时候让人很烦,尤其是一些 APP,不停地推,所以我手机上的消息推送权限基本上是关闭状态的——从此世界就安静了。
9)开放平台
通过开放平台,可以使用 OAuth 等协议获取用户在第三方平台上的信息以实现第三方平台登录。比如用户想要登录 A 网站,A 网站让用户提供第三方网站的数据,证明自己的身份。获取第三方网站的身份数据,就需要 OAuth 授权。
国内的微博、微信、QQ 是最常见的第三方登录方式,阿里系的产品可以通过支付宝授权登录,还有一些网站绑定了 GitHub 登录。
阮一峰的网络日志上有一篇 GitHub OAuth 第三方登录示例教程:
https://www.ruanyifeng.com/blog/2019/04/github-oauth.html
10)支付接口
目前,接入最多的支付接口就是支付宝和微信。
支付宝提供了当面付、APP 支付、手机网站支付、电脑网站支付等支付接口。
提供的文档很齐全,还有 Java、PHP、.NET 等版本的 Demo。
https://opendocs.alipay.com/open/270
微信支付的话,我推荐使用开源工具库 WxJava:
https://github.com/Wechat-Group/WxJava
本文转载自微信公众号「 沉默王二」,可以通过以下二维码关注。转载本文请联系 沉默王二公众号。