Collection for Y2016W35 (2016-08-29 ~ 2016-09-04)


最近終於把收集連結給 weekly post 使用的程式改的算是堪用了些,
會把之前幾週漏掉的 weekly post 補上,
順便複習一下自己之前看了什麼。


Algorithm

Compiler

GAE

  • Google App Engine Blog: 10 things you (probably) didn't know about App Engine
    • 2009 年的文章了,雖然年代有點久遠,但這十個看起來現在都還是一樣適用。
  • Dealing with DeadlineExceededErrors|App Engine Documentation|Google
    • 公司的 GAE 很常出現這個錯誤訊息,所以查了一下。
    • 基本上 DeadlineExceededErrors 有三種 (Python),以下直接複製貼上:
      • google.appengine.runtime.DeadlineExceededError
        • raised if the overall request times out, typically after 60 seconds, or 10 minutes for task queue requests.
      • google.appengine.runtime.apiproxy_errors.DeadlineExceededError
        • raised if an RPC exceeded its deadline. This is typically 5 seconds, but it is settable for some APIs using the 'deadline' option.
      • google.appengine.api.urlfetch_errors.DeadlineExceededError
        • raised if the URLFetch times out.
    • 這篇講的是第一種。
    • 然後通常看到這個第一種錯誤通常都是 API 的效能寫爛了,或是 task queue 裡面的 job 寫爛了卡住。
  • Automate deployments and traffic splitting with the App Engine Admin API
    • 好像沒用過這個
    • 要把 app.yaml 轉成 JSON 啊
  • Microservices Architecture on Google App Engine|App Engine standard environment
    • 算是官方教你如何使用 GAE 打造 Microservices 的 tutorial,覺得寫的還算詳細。
    • 主要是公司目前使用 GCP 最頻繁的服務就是 GAE 的 standard environment,所以想多瞭解一點。
    • 底下的連結大都是這篇 tutorial 的額外參考連結
  • Designing for Scale  |  App Engine Documentation  |  Google Cloud Platform
    • 2013 年的文章,雖然3年了,但也都還算實用。
    • 這篇主要在講使用 GAE 開發要注意哪些事情,否則可能會影響到未來的 scalability,有些的確是看了這篇才知道。
    • 雖然看完以後我覺得主要影響的應該是 performance,GAE 畢竟是 PaaS,有些東西是綁死的,所以必須要瞭解一下,否則很容易踩雷。
    • 以下直接複製各個要點,點連結看詳細的內容吧。
      • A single entity group in the Datastore should not be updated too rapidly
      • Avoid high write rates to Datastore keys that are lexicographically close
      • Do not set a spending limit that could be exceeded
      • Ensure that you will not hit quota limits on API calls
      • Shard task queues if high throughput is needed
      • Use the default performance settings unless you have tested the impact of changes
      • Use traffic splitting when switching to a new default version
      • Avoid Memcache hot keys
      • Test third-party dependencies
      • Implement backoff on retry
    • 最近感觸比較深的應該是 datastore 不要拿來做一些 relational 的 query 吧,因為效能真的不好,畢竟是 NoSQL 的東西,還是拿來存 key-value pair 才是比較好的做法。
  • Frontend vs Backend Instances for Task/Crons processing - Google Groups
    • 有人在論壇發問 Task queue 的 job 是 GAE 的 front-end instance 還是 back-end instance 在處理,底下有人給了解答。
  • Best Practices for App Engine Memcache For Thread Safety, Performance, and Code Migration
    • 算是 GAE 開發上的一些建議,裏面也有一些討論,其實講的蠻詳細的。
    • 看完後會有種,用 PaaS 快是快,但真的要處理效能或是用的順手的話真的要注意很多有的沒的問題。
    • 畢竟也是其他人寫出來的產品,如果沒有照著其設計理念去使用的話,多少會遇到一些問題以及用不順手的地方。
  • Google Cloud Platform Blog: Best practices for App Engine: memcache and eventual vs. strong consistency
    • 這篇算是比較艱深的文章
    • 基本上在講述 memcache 和 datastore 比較底層的觀念
    • 對於兩者的使用情境在效能方面做些說明
  • How Requests are Routed|App Engine standard environment for Python
    • 這篇是在講 GAE 的 default routing rules
    • 基本上只要 GAE 使用不只一個 service (module) 且每個 service 也不只使用一個 version 都應該瞭解一下
    • 和下面提到的 dispatch.yaml 也有關係
  • dispatch.yaml reference|App Engine standard environment for Python
    • GAE 可以透過設定 dispatch.yaml 來設定簡單的 routing rule。
    • 但有上限的限制
      • 最多只能 20 個 rule。
      • 指定 URL 路徑時,路徑不得超過 100 字元。
  • How to work with Front-end and back-end in Google App Engine - Manejando da
    • 介紹 GAE 的 front-end instance 跟 back-end instance
    • 其實我用這麼一段時間了還是沒有很理解
    • 只大概知道 Front-end instance 負責處理 static files 跟一分鐘內一定要 response,否則使用者會得到 500 Server Error。
    • Back-end instance 就可以拿來負責處理不需要那麼即時性的事務。

GCP

Programmer

Python

  • Efficient String Concatenation in Python
    • 效能最好的方法是使用 ''.join([list_comprehension_of_strings])
    • 這篇文章已經非常古老,2004 年的文章,用 Python 3 的話差異可能不會這麼大就是。

SEO

Wikipedia


Share


Donation

如果覺得這篇文章對你有幫助, 除了留言讓我知道外, 或許也可以考慮請我喝杯咖啡, 不論金額多寡我都會非常感激且能鼓勵我繼續寫出對你有幫助的文章。

If this blog post happens to be helpful to you, besides of leaving a reply, you may consider buy me a cup of coffee to support me. It would help me write more articles helpful to you in the future and I would really appreciate it.


Related Posts